2011-10-18 110 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变量。谢谢! –