我有两个分支A
和B
。它们都包含一个子模块(在文件夹sub
中),但是它们位于不同的提交上(这些提交不能从一个提交快速前进到另一个提交)。
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
不起作用。如何“在该路径上提供正确的内容”?——“唯一必要的是在该路径下有一个正确提交 ID 的 repo 在 HEAD 中”——但是如何实现呢?因为初始化子模块不起作用。 - MrTuxgit clone u://r/l -b $yourbranch path/to/repo; git add path/to/repo; git commit -m done
. - jthill