Git - 使用多个远程跟踪同一个分支和服务器

标签 git networking branch lan

我正在尝试在我的远程服务器上设置一个 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/

相关文章:

windows - Gitignore 不会忽略 Windows7/8 上 Visual Studio 2015 RC 的 .vs 文件夹

c# - 为什么 FtpWebRequest 会损坏附加到文件的文本?

c++ - 跨平台 C++ 网络(没有大库)

tfs - 我应如何正确摆脱TFS分支?

svn - 如何让 'git log' 显示像 'svn log -v' 这样的文件名

R Studio - 由于空提交消息而中止提交 - 使用 blogdown 部署时

version-control - GitHub 多个存储库与多个环境的分支

svn - 有什么好的、非分布式的、具有出色的分支和合并支持的 Subversion 替代方案?

git - 将现有的 git 存储库推送到现有的 SVN 存储库

networking - 调用 tcp : lookup xxx. xxx.xxx.xxx: 没有这样的主机