我有以下设置:我有一台笔记本电脑(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,但如果有解决方案,那就太好了。
由于
答案 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>
也作为遥控器存在,那么这不是最好的设置。远程引用在下次获取之前不会更新,但它对我来说已经足够多年了。