簡體   English   中英

git 克隆至 ssh

[英]git clone through ssh

我有一個項目,在該項目上創建了 git 存儲庫:

$ cd myproject  
$ git init  
$ git add .  
$ git commit  

我想在另一台機器上創建一個裸克隆:

$ cd ..  
$ git clone --bare myproject  ssh://user@server:/GitRepos/myproject.git  

我執行了克隆但沒有打印任何答案。 我登錄到服務器機器並嘗試查看文件是如何存儲的。 路徑 /GitRepos 是空的,所以我決定再次克隆:

$ git clone --bare myproject  ssh://user@server:/GitRepos/myproject.git

這一次的答案是:

致命:目標路徑 'ssh://user@server:/GitRepos/myproject.git' 已經存在並且不是空目錄。

但我看到這條路是空的。
這里發生了什么?

這可能與問題沒有直接關系; but one mistake I just made myself, and I see in the OP, is the URL specification ssh://user@server:/GitRepos/myproject.git - namely, you have both a colon : , and a forward slash / after it表示絕對路徑。

I then found Git clone, ssh: Could not resolve hostname – git, development – Nicolas Kuttler (as that was the error I was getting, on git version 1.7.9.5), noting:

我最初使用的命令的問題是我嘗試使用類似 scp 的語法。

...這也是我的問題! 所以基本上在gitssh中,你要么使用

  • ssh://username@host.xz/absolute/path/to/repo.git/ - 只是服務器上絕對路徑的正斜杠
  • username@host.xz:relative/path/to/repo.git/ - 只是一個冒號(它不能有ssh://服務器上的相對路徑(相對於服務器機器上username的主目錄)

希望這可以幫助某人,
干杯!

對於 GitHub 上的存儲庫,請嘗試:

git clone ssh://git@github.com/<user>/<repository name>.git

要設置 git 以通過 ssh 進行克隆,請參閱:

您需要在您調用的服務器上運行克隆命令。 但是我敢打賭,您沒有在本地客戶端上運行 ssh 服務器,因此無論如何它都無法正常工作。 建議你遵循這種方法(檢查手冊,因為我是從記憶中做的)

  1. 登錄到服務器機器。
  2. 使用git init --bare創建一個裸倉庫
  3. 在客戶端機器上,您可以將您的 repo 推送到服務器。 git remote add origin ssh://user@server:/GitRepos/myproject.git后跟git push origin master

免責聲明:這只是bobbaluba評論的副本,讓未來的訪問者更容易看到。 它對我的幫助比任何其他答案都多。


當使用git clone作為示例時,您必須刪除ssh://前綴

git clone git@github.com:owner/repo.git

解決這個問題的簡單方法
嘗試這個。

步驟1:

ls -al ~/.ssh

在此處輸入圖像描述

第2步:

ssh-keygen 

(使用回車鍵作為默認值) 在此處輸入圖像描述 第三步:設置配置文件

vim /c/Users/Willie/.ssh/config

主機gitlab.com
主機名 gitlab.com
用戶 git
身份文件 ~/.ssh/id_rsa

第4步:

git clone git@gitlab.com:<username>/test2.git

在此處輸入圖像描述

第 5 步:
完成第 4 步后
1.test2.git文件將下載完成
2.您將在 ~/.ssh 中獲得新文件(known_hosts)
在此處輸入圖像描述

PS:我自己創建了id_rsa和id_rsa.ub,然后我把它發送到Gitlab服務器。 使用任何客戶端(Windows 和 Linux)的兩個鍵。

Git 101:

git是一個去中心化的版本控制系統。 您不需要服務器即可啟動並運行 git。 您仍然可能想要這樣做,因為它看起來很酷,對吧? (如果您想在多台計算機上處理單個項目,這也很有用。)

因此,要運行“服務器”,您需要運行git init --bare <your_project>.git因為這將創建一個空存儲庫,然后您可以在您的機器上導入該存儲庫,而無需在您的.git中的配置文件中亂搞目錄

在此之后,您可以克隆客戶端上的存儲庫,因為它應該可以工作,但我發現某些客戶端(即git-gui )將無法克隆完全空的存儲庫。 To work around this you need to run cd <your_project>.git && touch <some_random_file> && git add <some_random_file> && git commit && git push origin master . (請注意,如果您過去沒有這樣做,您可能需要為該機器的 git 配置您的用戶名和 email。實際運行的命令將在您收到的錯誤消息中,所以我將省略它們。)

因此,此時您可以通過運行git clone <user>@<server>:<relative_path><your_project>.git將存儲庫克隆到任何機器。 (正如其他人指出的那樣,如果您使用絕對路徑,您可能需要為其添加前綴ssh:// 。)這假設您已經可以從客戶端登錄到服務器。 (如果您打算將大量內容推送到遠程服務器,您還將獲得為ssh設置配置文件和密鑰的獎勵積分。)

一些相關鏈接:
這幾乎告訴你你需要知道什么。
這適用於那些了解 git 的基本工作原理但有時會忘記確切語法的人。

我想嘗試一個包括 git-flow 和三個“點”或用例、git 中央存儲庫、本地開發和生產機器的答案。 這沒有經過很好的測試

我給出了令人難以置信的具體命令。 我不會說<your folder> ,而是說/root/git 我更改原始命令的唯一地方是用example.com替換我的特定服務器名稱。 我將解釋文件夾的用途,以便您可以相應地調整它。 請讓我知道任何困惑,我會更新答案。

服務器上的git版本是1.7.1。 服務器是 CentOS 6.3(最終版)。

開發機上的git版本是1.8.1.1。 這是 Mac OS X 10.8.4。

中央存儲庫和生產機器在同一台機器上。

svn 用戶可以關聯為“服務器”的中央存儲庫配置如下。 我有一個文件夾/root/git ,我在其中保存了所有 git 存儲庫。 我想為我稱之為“花”的項目創建一個 git 存儲庫。

cd /root/git
git clone --bare flowers flowers.git

git 命令給出了兩條消息:

Initialized empty Git repository in /root/git/flowers.git/
warning: You appear to have cloned an empty repository.

沒什么好擔心的。

在開發機上配置如下。 我有一個文件夾/home/kinjal/Sites我把我所有的項目放在那里。 我現在想要獲取中央 git 存儲庫。

cd /home/kinjal/Sites
git clone root@example.net:/root/git/flowers.git

這使我達到了可以開始向其中添加內容的地步。 我先設置git流

git flow init -d

默認情況下,這是在分支develop上。 我現在在這里添加我的代碼。 然后我需要提交到中央 git 存儲庫。

git add .
git commit -am 'initial'
git push

此時它推送到了開發分支。 我還想將它添加到主分支。

git flow release start v0.0.0 develop
git flow release finish v0.0.0
git push

請注意,我在發布開始和發布完成之間沒有做任何事情。 當我完成發布時,系統提示我編輯兩個文件。 這推動了開發分支掌握。

在與我的中央 git 存儲庫位於同一台機器上的生產站點上,我想將存儲庫放在/var/www/vhosts/example.net中。 我已經有/var/www/vhosts

cd /var/www/vhosts
git clone file:///root/git/flowers.git example.net

如果生產機器也在另一台機器上,那么git clone命令看起來就像在開發機器上使用的那樣。

git 克隆 git@server:Example/proyect.git

首先,我的 GIT 技能有點欠缺。

這將在您的計算機上克隆一個裸存儲庫,其中僅包含.git中的文件夾,這是一個隱藏目錄。 執行ls -al ,您應該會在存儲庫中看到.gitcd.git

您能否添加對您的意圖的描述,以便具有更多 GIT 技能的人可以提供幫助? 你真正想做的事情是什么,而不是你打算怎么做?

我做了: git clone --bare "/GITREPOSITORIES/RepoA" "ssh://luc@EERSTENASDS119J/volume1/RepoA" 結果:致命:目標路徑'ssh://luc@EERSTENASDS119J/volume1/RepoA'已經存在並且是不是空目錄。

系統在我當前的路徑下創建了一個目錄 ssh://luc@EERSTENASDS119J/volume1/RepoA。

所以 git 克隆沒有解釋 URL 規范。 使用了 Alec 的解決方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM