2011-12-29 7 views
14

Sto testando l'uso di git-subtree per unire un repository di libreria in un progetto più grande. Sembra fantastico in linea di principio. A volte, quando faccio un "git sottostruttura pull" Ottengo unire i conflitti come questo:report git uniscono conflitti senza modifiche, linee vuote (usando git-sottostruttura)

<<<<<<< HEAD 
======= 
An inserted line from the lib repo 
>>>>>>> 4d348903449ebb584ab224cb34c6038fbf6b352d 

Questo è un cambiamento che è stato fatto nel repository biblioteca, si fondono in un file che non è stato modificato a livello locale. Oppure un altro esempio, dove ho aggiunto una linea nella repo progetto locale, ma in un file che fa parte della sottostruttura in fase di fusione:

<<<<<<< HEAD 
Another inserted line 
======= 
>>>>>>> 4d348903449ebb584ab224cb34c6038fbf6b352d 

Perché sarebbe git segnalare questi come unire i conflitti, ma la regione segnalato come il il conflitto è vuoto? Un modo per impedirlo?

Questi sono abbastanza facili da risolvere, ma scombina il flusso di lavoro git-sottostruttura

+0

Verificare che le terminazioni di linea siano uguali su tutti i repository (Linux, Windows, Mac) – knittl

+0

Penso che sia avvenuto (nel secondo esempio) quando il file modificato localmente ha modificato il laster di data di quello della versione unita. –

risposta

-3

Utilizzare i moduli di tenere lavoro condiviso. C'è git-slave se si lavora molto con progetti condivisi e non condivisi che devono essere coordinati. La disparità di archiviazione terminata sulla linea scomparirà.

+0

Aggiungi commenti per il downvote. –

+0

Downvoted perché ho chiesto di usare git-subtree, non come usare i sottomoduli. E non ci sono prove che questo abbia qualcosa a che fare con i finali di linea –

+0

Sì, corretto. Ho letto male. –

1

Non è una soluzione al problema di root, ma piuttosto una soluzione. puoi usare
git merge -Xignore-space-change per ignorare le variazioni di spazio nei tuoi commit.

Probabilmente è un problema con le terminazioni di linea. si può provare un --dry-run alternativa a fusione (git merge non ha --dry-run opzionale):

$git merge -Xignore-space-change --no-commit --no-ff $BRANCH

per vedere i cambiamenti prima che realmente li commettono.

Problemi correlati