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

时间:2016-05-26 13:01:17

标签: git git-submodules git-remote

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

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

我们打算通过编写一个shell脚本来自动化进程和一个用于存储上游远程控制器的文件来解决这个问题,但这样做是否有 git方式

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

1 个答案:

答案 0 :(得分:1)

目前 ansatz 是:

  • 对于需要以上述方式管理的每个子模块,让submodule/.gitupstream文件存储该网址
  • 使用简单的shell脚本:
    • 从此文件
    • 更新子模块的上游远程
    • git fetch upstream
    • git checkout已知子模块补丁分支(可能来自.gitmodules submodule..branch)
    • git merge upstream / master(或任何refspec)

然后手动:

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

我希望看到一个更好的,可能是git内置解决方案。