Ho due rami A
e B
. Entrambi contengono un sottomodulo (nella cartella sub
), tuttavia con commit diversi (che non avviano rapidamente da uno all'altro).Come risolvere il conflitto del modulo sottotitolo git se il sottomodulo non è inizializzato
A B
|/
BASE
ho verificato A
, ma il modulo non è ancora inizializzato. Ora mi unisco allo B
e ho un conflitto sul sottomodulo.
$ git status
Unmerged paths:
(use "git add <file>..." to mark resolution)
both modified: sub
emissione git checkout --ours sub
non fa nulla (se il modulo viene inizializzato funziona, anche git checkout-index -f --stage=2 -- sub
non funziona). git add sub
causa l'errore 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
non fa nulla. Anche git submodule update --init --force -- sub
non funziona: Skipping unmerged submodule sub
.
Quindi, come posso risolvere questo conflitto di sottomodulo (senza interrompere l'unione e riprovare dopo l'inizializzazione del sottomodulo)?
Bene "Funziona come un'unione ordinaria", tuttavia 'git checkout --ours' e' git add' non funzionano. Come "fornire il contenuto corretto in quel percorso"?- "L'unica cosa necessaria è avere un repository su quel percorso con l'id di commit corretto in HEAD", ma come posso ottenerlo poiché l'inizializzazione del sottomodulo non funziona? – MrTux
Un sottomodulo è solo un repo. "L'unica cosa necessaria è avere un ** repo ** su quel percorso". 'git clone u: // r/l -b $ yourbranch path/to/repo; git add path/to/repo; git commit -m done'. – jthill
Questa opzione ha funzionato per me. Ho semplicemente clonato la versione corretta del repository mancante nella posizione del sottomodulo e quindi l'unione è andata avanti. –