我有兩個分支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