0

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

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

现在问题出在L:它可以在局域网中。然后它使用通过 IP 直接连接到 S。它也可以在局域网之外。然后必须使用端口转发隧道打开与另一台机器(R 表示路由器)的 SSH 连接。然后在 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.

我不知道如何告诉 git 我有两个上游分支供 master 使用。现在我可以附加关键字 master 但如果有解决方案会很好。

谢谢

4

2 回答 2

0

Git 中不能有两个上游,但可以提供推送 url。如果您真正想做的只是维护备份或类似的东西。您可以为您的来源执行此操作:

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

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

于 2013-09-26T23:54:57.263 回答
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或我想推送的任何分支。

于 2013-09-26T10:37:02.223 回答