Git:如何接受子模块冲突的“他们的”版本?

时间:2012-06-28 10:32:13

标签: git conflict git-submodules

如果子模块发生冲突(即当两个提交合并包含引用提交的不同更改时),如何轻松地将子模块设置为“他们”提交?如果是文件,我会执行:

git checkout --theirs <file>

但是这对子模块不起作用。在更技术层面上,我所拥有的是包含submodule阶段 1 2 3 的索引:

$ git ls-files -s module
160000 89b085c4269259fa22632353071e6875f158afde 1       submodule
160000 b9ad3bc8aafdf52a2adf74620afae8934474b82d 2       submodule
160000 1afd42893d18ef5edeeadd67e7c65262505e6004 3       submodule

我想要的是在 0 阶段拥有“他们的”版本:

$ git ls-files -s module
160000 1afd42893d18ef5edeeadd67e7c65262505e6004 0       submodule

更新:已删除参考http://fiji.sc/wiki/index.php/Git_submodule_tutorial上的错误断言。

更新2:已添加与索引相关的示例。

1 个答案:

答案 0 :(得分:3)

您的父存储库只是引用子模块存储库的当前工作版本。 “子模块指针”始终指向子模块的工作副本。

因此,您必须将子模块存储库置于您想要的状态(在此特定情况下,通过将其更新为“他们的”版本)。之后,“子模块指针”将自动更新(当然,您必须提交更改)。