git submodules:跟踪子模块中的相应分支?

nfi*_*ine 5 git

假设您将一个项目分解为一个超级项目和一个子模块。它们都有稳定(主)分支和开发分支。有没有办法设置子模块,以便超级项目从其 dev 分支跟踪子模块的 dev 分支,从其稳定分支跟踪子模块的稳定分支?

我想象的是这样的.gitmodules

[submodule "subproject"] path = subproject url = http://www.github.com/nfirvine/subproject branch = $current_branch_name

(我特别关注 Ansible 项目,他们的stable-1.9分支跟踪devel其子模块的分支。这似乎是在自找麻烦。)

您可以使用 git 属性来指定.gitmodules不会自动合并,但我想知道是否有比这更聪明的东西。

Zen*_*xer 0

超级项目中的每个提交都将与子模块中的特定提交相关联。子模块不会自动更新或遵循分支:每次您想要同步时,您都需要 cd 到子模块目录,签出您选择的分支,运行 ,git pull然后将结果提交到超级项目。您可以让超级项目中的每个分支都指向一个提交,而该提交又指向一个适当的子模块提交;git 不会为你做这件事。当您合并分支时,您需要手动对该部分进行排序。

当然,这一切都是假设您没有编写一些很棒的脚本来抑制这种疯狂。