假设您将一个项目分解为一个 super 项目和一个子模块。它们都有稳定的(主)分支和开发分支。有没有办法设置您的子模块,以便 super 项目从其 dev 分支跟踪子模块的 dev 分支,并从其稳定分支跟踪子模块的稳定分支?
我想象的是 .gitmodules
中的这样的东西:
[submodule "subproject"]
path = subproject
url = http://www.github.com/nfirvine/subproject
branch = $current_branch_name
(我特别关注 Ansible project ,他们的 stable-1.9
分支跟踪其子模块的 devel
分支。这似乎是自找麻烦。)
您可以使用 git 属性来指定 .gitmodules
不会自动 merge ,但我想知道是否有比这更聪明的东西。
最佳答案
super 项目中的每个提交都将与子模块中的特定提交相关联。子模块不会自动更新或跟随分支:每次你想要同步时,你需要 cd 到子模块目录,检查你选择的分支,运行 git pull
,然后将结果提交给 super 项目。您可以让 super 项目中的每个分支都指向一个提交,该提交又指向一个适当的子模块提交; git 不会为你这样做。当你 merge 分支时,你需要手动整理那部分。
当然,这一切都假设你没有编写一些很棒的脚本来驯服这种疯狂。
关于git子模块: track corresponding branch in submodule?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30248898/