Git有多个遥控器

时间:2013-09-26 09:40:47

标签: git

我有以下设置:我有一台笔记本电脑(L),一台中央机器(S代表服务器)和一台固定电脑(P)。

P和S在同一个局域网中。对于S上的每个分支,可以使用一个远程跟踪分支轻松交换git存档。好的。

现在问题出在L:它可以在局域网中。然后它通过IP直接连接到S.它也可以在局域网之外。然后必须使用端口转发隧道打开到另一台机器(路由器的R)的SSH连接。然后在L上你可以通过隧道访问S.

我使用服务器的LAN-IP为master添加了一个远程origin。现在我使用git remote add server.intern ssh://localhost:2222/...添加了第二个远程,并正确获取了远程分支remotes/server.intern/master。现在我尝试使用git push server.intern将活动分支(主)推入隧道。

我收到错误:

fatal: You are pushing to remote 'server.intern', which is not the upstream of 
your current branch 'master', without telling me what to push
to update which remote branch.

我不知道如何告诉git我有两个上游分支为master。现在我可以附加关键字master,但如果有解决方案,那就太好了。

由于

2 个答案:

答案 0 :(得分:0)

我甚至找到了更好的解决方案(感谢另一个问题的链接):我添加了

[alias]
    rpush = "!ssh -f -L 2222:server.intern:22 example.net sleep 5 ; sleep 1 ; git push server.intern"
    rfetch = "!ssh -f -L 2222:server.intern:22 example.net sleep 5 ; sleep 1 ;  git fetch server.intern"

到我的.git/cinfig文件。现在我不再需要手动调用ssh而且我不需要多个控制台。现在我只需要调用git rpush master或我要推送的任何分支。

答案 1 :(得分:0)

你不能在Git中有两个上游,但你可以提供推送网址。如果您真正想做的就是维护备份或类似的东西。你可以为你的起源做到这一点:

git remote set-url --push --add origin <origin-url>
git remote set-url --push --add origin <alternate-url>

每当您推送到原点时,这将推送到<origin-url><alternate-url>。如果<alternate-url>也作为遥控器存在,那么这不是最好的设置。远程引用在下次获取之前不会更新,但它对我来说已经足够多年了。