2013-09-26 110 views
0

我有以下设置:我有一台笔记本电脑(L),一台中央机器(S服务器)和一台固定PC(P)。Git与多个遥控器

P和S在同一个LAN中。 G上的每个分支都可以使用一个远程跟踪分支轻松交换git归档。好的。

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

我使用服务器的LAN-IP为主站添加了一个远程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. 

我不知道该怎么告诉混帐,我有师傅两个上游分支。现在,我可以追加关键字主控,但如果有解决方案,它会很好。

感谢

+0

Git中不能有两个上游分支。虽然Git允许您在存储库之间使用任意连接网络,但它稍微适合制作树状分层结构。 “上游分支”功能可让您定义树中的主链接,并以较少的键入沿着这些链接进行推送/拉出。对于辅助链接,你必须明确。 – millimoose

回答

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或我想推送的任何分支。

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>也是作为一个遥控器。它的远程引用将不会更新,直到下一次获取,但它已经足够我多年的工作。