假设您有一个项目分为超级项目和子模块。它们都有稳定的(主)分支和dev分支。有没有办法设置子模块,以便超级项目从其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
不会自动合并,但我想知道是否有更聪明的东西。
答案 0 :(得分:0)
超级项目中的每个提交都将与子模块中的特定提交相关联。子模块不会自动更新或跟随分支:每次要同步时,都需要cd到子模块目录,签出您选择的分支,运行git pull
,然后将结果提交给超级项目。您可以让超级项目中的每个分支指向一个提交,而该提交又指向适当的子模块提交; git不会为你做那件事。当您合并分支时,您需要手动对该部分进行排序。
这就是假设你没有写一些很棒的剧本来驯服疯狂,当然。
答案 1 :(得分:0)
您可以让主项目跟踪子模块的提交,但您必须提交任何更改。
例如,您有一个主项目和一个子模块,它们都有一个master和develop分支。如果您在主项目中提交子模块目录,则下次您或其他仓库运行git fetch && git submodule update
时,您将获得子模块的最新提交。
你必须更新你的子模块,然后提交更改,跟踪不是自动的,因为只需更新git repos并拉动它们就可以没有子模块。