2012-03-13 42 views
2

我目前正在處理一個項目,需要我從我的機器ssh到機器Y,在此處執行git pull,然後檢索編譯的代碼,以便我可以看到我們的位置在。與git一起使用「代理」

我想用git直接在X,但我不能因爲我從Y屬於本地網絡拉代碼。有沒有辦法以某種方式使用X作爲代理,所以我可以直接在我的機器上使用git併爲自己節省很多麻煩?

(我使用的Linux發行版,順便說一句)

+0

注意自我:這是我第1萬次堆棧溢出upvote。 – VonC 2012-03-13 21:03:54

+0

我很榮幸;-) – 2012-03-14 07:47:57

回答

2

如果你有sshd的上Y運行(因爲你可以sshY和執行操作),您可以:

這樣,喲如果需要,您可以直接在X上獲得Y回購的克隆,進行修改並可以推回到Y回購(origin)。

+0

注意:Git和ssh協議:http://progit.org/book/ch4-1.html#the_ssh_protocol – VonC 2012-03-13 07:47:30

1

您可以使用ssh的代理功能。舉例來說,我(名字遮擋以保護有罪:-)):

# tunneling 
Host *.secure2.com 
    ProxyCommand ssh secure1.local.com 'conn %h %p' 

其中「conn將」是一個命令我有確實給目標主機/端口對的連接。如果有的話,您可以使用nc命令。請參閱ssh_config手冊頁(通常在第5節中)。

1

我只想着一個本地端口機器Ÿ當你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作業來保持它的最新狀態。使用本地轉發端口最簡單,非常靈活。