Abbiamo cercato di ottenere git-subtree lavorando su un progetto (con git versione 1.7.9.4) e abbiamo incontrato un po 'di complicazioni. Qualcun altro precedente aggiunto la sottostruttura con questo comando qualche mese fa:git-subtree pull complicazioni
git subtree add --prefix=foo [email protected]:foo.git master
modifiche sostanziali Ora ci sono stati a foo
e vorremmo di unire a questi cambiamenti, idealmente schiacciandoli nella Nessuno dei file sono stati. modificato da quando sono stati importati.
Ho provato tre cose per provare e unire le modifiche.
Primo:
git subtree pull --squash -P foo [email protected]:foo.git master
che getta l'eccezione: Can't squash-merge: 'foo' was never added.
Secondo:
git subtree pull -P foo [email protected]:foo.git master
questo funziona (o quasi), ma ha il problema di tirare in tutti i commit e ha conflitti con i file che sono stati modificati.
Infine, ho provato questo:
git pull --squash -s subtree [email protected]:foo.git master
Questo mi dà il risultato desiderato, con l'uscita Automatic merge went well; stopped before committing as requested
e tutti i file che mostra come modificato (con il contenuto corretto).
Idealmente mi piacerebbe continuare a utilizzare la prima versione git-subtree
e ottenere un output vicino all'ultima versione. Se dovessimo utilizzare l'ultima versione in modo coerente, lo faremo, ma sono un po 'confuso sul motivo per cui l'ultimo non produce conflitti di fusione mentre quello intermedio lo fa.
Qualsiasi aiuto è apprezzato.
Ho avuto lo stesso problema che è risultato essere causato da una mancanza di una sottocartella nell'opzione prefisso quando provo a tirare. Aggiungendo questo come commento dal momento che il messaggio di errore non fornisce alcuna indicazione di questo errore e la risoluzione dei problemi mi ha portato qui. –
Grazie, questo è utile. Ho avuto un problema correlato in cui ho spostato la sottodirectory dopo aver aggiunto la sottostruttura al suo interno, il che sembra far saltare questa partita –