相当于git checkout我们/他们的子模块

时间:2016-12-14 19:40:28

标签: git git-merge git-submodules

解决文件中的冲突时我可以

git checkout --ours filename

然后提交文件。这将解决冲突。然而,

git checkout --ours submodule

似乎不起作用。子模块的引用提交不会改变。

在解决子模块引用中的冲突时,git checkout --ours filename的等价物是什么?

1 个答案:

答案 0 :(得分:2)

Considering your next question,您可以尝试结帐子模块的三个阶段之一:

git checkout -1 -- submodule # common ancestor
git checkout -2 -- submodule # source
git checkout -3 -- submodule # destination or MERGE_HEAD

更改了子模块的gitlink后,请不要忘记git submodule update,以刷新其内容。

OP Amiramix引用此quora answer,其中Berk D. Demir,Facebook的制作工程师补充道:

git checkout -1 file
  

...将从两个分支的祖先签出文件   这不是我们的"我们的#34;也不是"他们的"。它是这两个分支分歧之前的文件版本。非常方便。

     

您可以猜到,参数-2适用于HEAD版本,-3版本来自MERGE_HEAD

     

通过所有其他git命令访问这些文件的另一种方法是使用提交的symbolic-refs   git checkout MERGE_HEAD -- file--theirs-3具有相同的效果。

     

处理合并冲突时另一个方便的语法是路径的冒号阶段冒号前缀。 git show :3:file将显示MERGE_HEAD的文件(而不是差异)。

     

一个很小的备忘单:

-1 == $(git merge-base HEAD MERGE_HEAD)
-2 == --ours == HEAD
-3 == --theirs == MERGE_HEAD