什么会导致git中的子模块冲突,以及它们应该如何解决?

我们正在使用子模块,我们对git是新手。

我们经常看到子模块本身的合并冲突,没有文件冲突,只是子模块。 git submodule summary的输出中列出了多个版本。 我们通过在超级项目中运行git add <submodule>来解决它们。
但是,今天,当她以这种方式解决冲突时,我们让开发人员失去了对子模块的承诺。
运行git add会选择远程版本吗? 子模块的内容不应该合并? 如果她在子模块中进行了修改并实施了它们(我所看到的),那么为什么在她拉动并解决冲突之后该修改会消失?


当您的当前分支和您想要合并的分支已经发生分离时,会发生文件冲突和子模块冲突。

这仅仅意味着存在一个模棱两可的情况 - 你可以合理地想要在任何特定情况下“赢”。 所以,虽然它看起来很烦人,但它们只是强调你丰富的选项来指定你想要的(并且你必须指定你想要的)。 (而且,程序员每天都在做的只是指定细节。)

看起来git-add-the-sub-module-on-the-superproject应该已经工作了。 但是,您也可以选择立即在该超级项目上进行混淆检查。 在此链接中提到了这一点(解决子模块冲突),它讨论了文件冲突和Summodule冲突之间的差异以及如何解决它们:

http://pacific.mpi-cbg.de/wiki/index.php/Git_Conflicts


您的本地子模块和远程子模块已经分离。

git checkout --theirs submodulename

或为您的版本:

git checkout --ours submodulename

然后使用git add提交更改并提交更改。

注意:如果tabcomplete,您的shell可能会为子模块名称添加尾部斜杠,因为它也是一个子目录。 如果是这样,你需要删除它,否则你会得到:

error: pathspec 'submodulename/' did not match any file(s) known to git.
链接地址: http://www.djcxy.com/p/92285.html

上一篇: what causes submodule conflicts in git, and how should they be resolved?

下一篇: Greyed out folder in GitHub repo?