git子模块: 追踪子模块中对应的分支?

5
假设你有一个项目,其中包括一个超级项目和一个子模块。两者都有稳定的(master)分支和开发分支。是否有一种方法可以设置子模块,使得超级项目从其开发分支跟踪子模块的开发分支,并从其稳定分支跟踪子模块的稳定分支?
我想象中的是在.gitmodules中是这样的:
[submodule "subproject"] path = subproject url = http://www.github.com/nfirvine/subproject branch = $current_branch_name (我特别关注Ansible项目,他们的stable-1.9分支跟踪子模块的devel分支。这似乎是在自找麻烦。)
你可以使用git属性指定不自动合并.gitmodules,但我想知道是否有更聪明的方法。
2个回答

0

超级项目中的每个提交都将与子模块中的特定提交相关联。 子模块不会自动更新或跟随分支:每次您想要同步,您需要进入子模块目录,检出所选的分支,运行git pull,然后将结果提交到超级项目。 您需要确保超级项目中的每个分支都指向一个相应的子模块提交;Git 不会为您完成这项工作。 当您合并分支时,您需要手动解决这部分问题。

当然,这一切都是在假设您没有编写一些神奇的脚本来驯服混乱的情况下。


0

你可以让主项目跟踪子模块的提交,但必须提交任何更改。

例如,你有一个主项目和一个子模块,两者都有主分支和开发分支。如果你在主项目中提交了子模块目录,下一次你或另一个仓库运行git fetch && git submodule update时,你将拥有子模块的最新提交。

你必须更新你的子模块,然后提交更改,跟踪不是自动化的,因为你可以通过更新两个git仓库并拉取它们来实现这一点,而不需要使用子模块。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接