解决文件中的冲突时我可以
git checkout --ours filename
然后提交文件。这将解决冲突。然而,
git checkout --ours submodule
似乎不起作用。子模块的引用提交不会改变。
在解决子模块引用中的冲突时,git checkout --ours filename
的等价物是什么?
答案 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