如何使用Git跟踪一个分支上的多个远程库?

15

情况如下:

我有一个以上的远程仓库--参考而言,假设一个是“alpha”仓库,我们最近设置了一个新的“beta”仓库,一些用户已经迁移到了这个仓库。

两个仓库都有一个“master”分支。

我该如何设置本地的“master”分支,使其自动尝试将代码推送和拉取到所有alpha和beta仓库中,而不需要每次手动指定要使用的远程仓库?

我需要澄清的是,我不想设置两个本地分支'master-alpha'和'master-beta',我希望相同的本地分支可以跟踪两个远程仓库。


可能是pull/push from multiple remote locations的重复问题。 - RedX
2个回答

12

我不认为只用一个git命令就能实现。
另一种选择是定义一个git别名,该别名将从一个存储库中拉取主分支,然后从另一个存储库中拉取主分支。

但如果两个主分支之间的提交历史有很大区别,那么这很快会导致大量冲突...


你会推荐什么样的别名?我想最合理的限制应该是我们只需要考虑快进的情况 - 其他任何情况都应该导致命令失败,强制我逐个拉取每个远程。 - Arafangion
@Arafangion:起初,我考虑使用一个简单的别名,例如 git config --global alias.pullall "!git pull origin1 && git pull origin2"。然而,receive.denyNonFastForwards 配置是针对推送而非拉取的。 - VonC
看起来我可能只需要编写一个快速的shell脚本来完成这项工作,然后拉取每个远程仓库,直到检测到正在进行中的合并。 - Arafangion
2
@Arafangion:没错,但你需要考虑第一次拉取成功而第二次失败的情况:需要完全重置到第一次拉取之前。 - VonC

1
我写了一个脚本可以帮助你: git-list-upstream-commits 它不会进行拉取或合并,但它将查看所有远程分支,并显示哪些分支有你当前分支上没有的提交。
它按最近提交的分支排序,在底部显示最新提交的每个分支,并显示一些基本信息。

Example of using the script


那看起来很酷,我会点赞它! - Arafangion

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接