git: 在一个子模块中管理多个遥控器

git: manage multiple remotes in a submodule

我的团队使用公开可用的 github 托管项目作为我们主项目中的子模块。我们想针对该项目管理我们自己的补丁,而不向上游推送,但是除非我们有一个镜像可以推送我们的私有分支,否则我们无法共享这些补丁。

假设我们有镜像,我们的子模块需要两个远程:一个我们从中获取上游更改,一个我们推送与我们的补丁分支合并的地方。我们如何使用子模块(或超级项目)存储有关遥控器的信息,以便团队的每个成员都可以轻松地执行上游更新,而不必 git add remote upstream ...github...project.git.

我们打算通过编写一个 shell 脚本来自动执行该过程和一个用于存储上游遥控器的文件来解决这个问题,但是有没有 git 方法 这样做?

可能相关,但我没有找到合适的解决方案:git add remote in submodule

当前的ansatz是这样的:

  • 对于每个需要以上述方式管理的子模块,有一个submodule/.gitupstream文件存储url
  • 使用简单的 shell 脚本:
    • 从这个文件
    • 更新子模块的上游远程
    • git 获取上游
    • git 检查已知的子模块补丁分支(可能来自 .gitmodules submodule..branch)
    • git 合并 upstream/master(或任何 refspec)

然后手动:

  • git push origin(包含我们补丁分支的镜像)
  • 提交更改的子模块并推送到超级项目

不过,我希望看到更好的 git 内置解决方案。