我目前正在处理一个项目,需要我从我的机器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