当我解决文件中的冲突时,我可以:
git checkout --ours filename
然后提交该文件。这将解决冲突。但是,
git checkout --ours submodule
似乎不起作用。子模块的参考提交没有更改。
在解决子模块引用冲突时,git checkout --ours 文件名
的等效操作是什么?
当我解决文件中的冲突时,我可以:
git checkout --ours filename
然后提交该文件。这将解决冲突。但是,
git checkout --ours submodule
似乎不起作用。子模块的参考提交没有更改。
在解决子模块引用冲突时,git checkout --ours 文件名
的等效操作是什么?
考虑到您的下一个问题, 您可以尝试对子模块的三个阶段进行检查:
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答案, 其中Facebook的生产工程师Berk D. Demir补充道:
git checkout -1 file
-1 == $(git merge-base HEAD MERGE_HEAD)
-2 == --ours == HEAD
-3 == --theirs == MERGE_HEAD
git checkout -2 -- submodule
是否相当于正常文件合并中的“ours”,而 git checkout -3 -- submodule
是否相当于“theirs”?此外,我只是在合并,不需要将子模块检出或更新到特定提交。我可以忽略 git submodule update
并仅提交合并后的更改吗? - Greggit checkout -1 -- submodule
返回 unknown switch \
1'。
git checkout -2和
git checkout -3没有返回任何错误,但是
git diff` 仍然显示未合并路径中的三个提交(theirs、ours 和本地检出)。我正在使用 git 1.7.1(被 Centos6 卡住了),这可能是原因吗? - Greggit checkout HEAD submodule
和 git checkout MERGE_HEAD submodule
在1.7.1中有效。你能否将其添加到答案中,我会接受它。 - Greg
-2
,--ours
和HEAD
)中,只有git checkout HEAD submodule
执行了它应该执行的操作。也许在更新版本的git上,这三个选项都可以工作。 - Greg