我目前正在處理一個項目,需要我從我的機器ssh
到機器Y
,在此處執行git pull
,然後檢索編譯的代碼,以便我可以看到我們的位置在。與git一起使用「代理」
我想用git
直接在X
,但我不能因爲我從Y
屬於本地網絡拉代碼。有沒有辦法以某種方式使用X
作爲代理,所以我可以直接在我的機器上使用git併爲自己節省很多麻煩?
(我使用的Linux發行版,順便說一句)
我目前正在處理一個項目,需要我從我的機器ssh
到機器Y
,在此處執行git pull
,然後檢索編譯的代碼,以便我可以看到我們的位置在。與git一起使用「代理」
我想用git
直接在X
,但我不能因爲我從Y
屬於本地網絡拉代碼。有沒有辦法以某種方式使用X
作爲代理,所以我可以直接在我的機器上使用git併爲自己節省很多麻煩?
(我使用的Linux發行版,順便說一句)
如果你有sshd的上Y
運行(因爲你可以ssh
上Y
和執行操作),您可以:
git
上X
git clone ssh://[email protected]:/path/to/repo/on/Y
這樣,喲如果需要,您可以直接在X
上獲得Y
回購的克隆,進行修改並可以推回到Y
回購(origin
)。
注意:Git和ssh協議:http://progit.org/book/ch4-1.html#the_ssh_protocol – VonC 2012-03-13 07:47:30
您可以使用ssh的代理功能。舉例來說,我(名字遮擋以保護有罪:-)):
# tunneling
Host *.secure2.com
ProxyCommand ssh secure1.local.com 'conn %h %p'
其中「conn將」是一個命令我有確實給目標主機/端口對的連接。如果有的話,您可以使用nc
命令。請參閱ssh_config
手冊頁(通常在第5節中)。
我只想着一個本地端口機器Ÿ當你ssh到機器X:
ssh -L2022:Y:22 [email protected]
現在,當你的SSH會話存在,你可以使用另一個本地shell和對機器ÿ運行ssh命令:
git clone ssh://[email protected]:2022/repos/Yrepo repo_from_Y
或者當然,克隆/從Y拉到X,您可以從X克隆/拉到您的本地機器,使X成爲代理中間體。如果你使X上的克隆成爲Y的一面鏡子,你可以添加一個cron作業來保持它的最新狀態。使用本地轉發端口最簡單,非常靈活。
注意自我:這是我第1萬次堆棧溢出upvote。 – VonC 2012-03-13 21:03:54
我很榮幸;-) – 2012-03-14 07:47:57