我有两个分支A
和B
。两者都包含一个子模块(在文件夹sub
中),但是在不同的提交中(不会从一个快速前进到另一个)。如果子模块未初始化,如何解决git子模块冲突
A B
|/
BASE
我已经签出A
,但子模块尚未初始化。现在我合并B
,我在子模块上发生冲突。
$ git status
Unmerged paths:
(use "git add <file>..." to mark resolution)
both modified: sub
发行git checkout --ours sub
什么也不做(如果该子模块初始化它的工作原理,也git checkout-index -f --stage=2 -- sub
不工作)。 git add sub
导致错误error: pathspec 'sub' did not match any file(s) known to git.
。
$ git diff sub
diff --cc sub
index 533da4e,ab2af77..0000000
--- a/sub
+++ b/sub
@@@ -1,1 -1,1 +1,1 @@@
- Subproject commit 533da4ea00703f4ad6d5518e1ce81d20261c40c0
-Subproject commit ab2af775ec467ebb328a7374653f247920f258f3
++Subproject commit 0000000000000000000000000000000000000000
git submodule init -- sub
什么都不做。另外git submodule update --init --force -- sub
不起作用:Skipping unmerged submodule sub
。
那么,如何解决此子模块冲突(在初始化子模块后不中止合并并重试)?
那么“这工作就像普通的合并”,但是'git checkout --ours'和'git add'不起作用。如何“在该路径上提供正确的内容”? - “唯一需要的是在HEAD中用正确的提交ID在该路径上进行回购” - 但是,如何初始化子模块无法实现? – MrTux 2014-10-29 13:37:10
子模块只是一个回购。 “唯一需要的是在这条路上有一个**回购**。” 'git clone u:// r/l -b $ yourbranch path/to/repo; git add path/to/repo; git commit -m done'。 – jthill 2014-10-29 14:53:58
此选项适用于我。我只是在子模块位置克隆了缺失回购的正确版本,然后合并就完成了。 – 2018-03-06 00:16:36