我的团队使用公开可用的 github 托管项目作为我们主项目中的子模块。我们希望针对该项目管理我们自己的补丁,而不向上游推送,但是我们无法共享这些补丁,除非我们有一个镜像来推送我们的私有(private)分支。
假设我们有镜像,我们的子模块需要两个远程:一个是我们从中获取上游更改的地方,另一个是我们推送与我们的补丁分支 merge 的地方。我们如何使用子模块(或 super 项目)存储关于 Remote 的信息,以便团队的每个成员都可以轻松地执行上游更新,而不必 git add remote upstream ...github.. .project.git
.
我们打算通过编写一个 shell 脚本来自动执行该过程和一个用于存储上游远程的文件来解决这个问题,但是是否有 git 方式可以做到这一点?
可能相关,但我没有看到合适的解决方案:git add remote in submodule
最佳答案
当前的ansatz是这样的:
- 对于每个需要以上述方式管理的子模块,有一个
submodule/.gitupstream
文件存储url - 使用一个简单的 shell 脚本:
- 从这个文件更新子模块的上游远程
- 上游获取git
- git checkout 已知的子模块补丁分支(可能来自 .gitmodules submodule..branch)
- git merge upstream/master(或任何 refspec)
然后手动:
- git push origin(包含我们补丁分支的镜像)
- 提交更改的子模块并推送到 super 项目
不过,我希望看到一个更好的,可能是 git 内置的解决方案。
关于git:在子模块中管理多个 Remote ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37461647/