2011-10-18 113 views
2

我們有一個移除服務器A的git存儲庫。我通常通過ssh從我的工作機器訪問,例如,通過ssh鏈接從遠程服務器獲取git克隆

 
git clone [email protected]:/path/to/repo 

但是,A不能直接從外部工作。還有另一個服務器B,我可以進入,然後ssh進入A.現在我想要做的是在家裏克隆我的機器上的存儲庫。我嘗試過的東西,如

 
git clone B:A:/path/to/repo 
git clone [email protected]:A/path/to/repo 

這兩者都沒有工作。我想我可以複製B上的回購並從那裏複製,但將更改合併回A會很麻煩。任何建議如何我可以直接訪問A?

回答

5

如果您有服務器A和B之間的無密碼SSH的設置,那麼你可以寫一個簡單的包裝腳本通過SSH連接到服務器A,並使用來自Git的參數運行命令SSH。

創建腳本:

cat <<EOF> ssh-wrapper.sh 
#!/bin/sh 
ssh -T serverB.example.com ssh ${@} 
exit $? 
EOF 
chmod 755 ssh-wrapper.sh 

然後設置GIT_SSH到./ssh-wrapper.sh並調用混帳:

GIT_SSH='./ssh-wrapper.sh' git clone [email protected]:/path/to/repo 
+0

很好,謝謝。給讀者的一個快速提示:使用標準語法進行提交,例如「git commit -m」。通過指定包裝器的路徑推送:GIT_SSH ='。/ ssh-wrapper.sh'git push – mbatchkarov

+0

我需要使用特定的部署密鑰來調用ruby的捆綁器。經過多年的搜索,我終於在答案中找到了魔法env變量。謝謝! –