2013-07-22 86 views
3

这里是我遇到的情况。 我有一个包含子模块的仓库。在回购协议中,我创建了一个新分支来进行一些编辑。切换分支时git是否更改子模块参考

然后我发现我需要一个更新的子模块,所以我拉下子模块并继续工作。 之后我做了一个提交,并将分支合并回主分支。

在主分支,当我使用“混帐子模块更新”,子模块点回到旧的版本,而不是更新的一个分支:(

我想知道如果混帐合并子模块参考?谁能帮我

回答

1

在您的分支,拉子模“xxx”后,你需要回到父回购(其中包含你的子模块的文件夹中),并办?答:

git add xxx 
git commit -m "Updated submodule" 

这将记录更新的special entry of the index记住子模块'xxx'的新SHA1。

这就是当你将分支合并回master时需要更新的特殊条目。

如果您忘记了分支中的git add/git commit步骤,合并回master会使特殊条目保持不变,仍旧指的是旧的SHA1。

+0

我添加了赏金,因为我有与OP相同的问题 - 但是我*已*添加并提交了原始分支中的子模块。它并未显示在我合并的分支中。 –

+0

@SteveFallows“它不显示”意思是“子模块不显示”?或者子模块在那里,但其带有拉动SHA1的更新内容不显示? – VonC

+0

后者 - 在合并之前,它仍然是原始版本的SHA1,而不是我在其他分支中提交的更新版本。在项目中还有其他的子模块可以完成 - 不知道我在这里弄脏了什么。 –