我正在尝试在我的远程服务器上设置一个 Git 存储库,我正在与其他人共享。唯一的问题是,它位于我的 LAN 中,而我并不总是其中的一部分。 我希望能够有 2 个 Remote 使用同一个分支,全部同步,几乎像一个符号链接(symbolic link)(但有配置)。
更难的是,如果我在 LAN 中尝试使用外部 IP 作为远程,它将失败,因为它映射到我的路由器自己的内部 IP。
我希望能够在 LAN 中执行 git push/pull lan
推送,而在不在 LAN 中时执行 git push/pull wan
,并确保两者都不会提示任何与他们两个是分开的。
我还想确保它们使用相同的数据在它们之间进行同步,因为在这两种情况下目标服务器都是相同的。我有一些使用 Git 的经验,但还不足以做到这一点并确保它能按计划工作。
我不想通过为一个分支设置 2 个远程 URL 来尝试同时同步它们,因为它只会因为超时而使推/pull 非常慢。
假设我已经设置了 LAN,是最新的,并且已经进行了初始提交,并且尚未设置 WAN。
假设服务器的内部 IP 是 myserver.lan
,外部 IP 是 mydomain.org
,我该怎么做?
最佳答案
As I commented below ,您可以根据需要向本地存储库添加任意数量的 Remote :
git remote add upstream1 /url/first/repo
git remote add upstream2 /url/first/repo
然后 git push
可以选择正确的远程使用:
git push upstream1
# or
git push upstream2
最简单的方法是添加一个脚本:
- 测试正确的 url(例如,使用 git ls-remote/url/to/remote/repo)
将origin替换为在当前环境下有效的url
git remote set-url origin /url/that/works
这样一来,您始终只有一个 Remote 需要管理:名为“origin
”的默认 Remote 。
但是每次您切换环境时,您的脚本都可以更新 origin
url。
关于Git - 使用多个远程跟踪同一个分支和服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24719926/