2014-12-11 11 views
15

Recentemente ho abilitato diff3 e ora è molto più semplice risolvere i conflitti.Se diff3 è default conflicttyle su git?

In precedenza, in alcuni casi, dovevo controllare il registro per capire perché le persone hanno fatto questo e quello per fare l'unione. Ma con diff3 vengono visualizzate le informazioni in un unico luogo

<<<<<<< HEAD 
THIS IS USEFUL 
||||||| merged common ancestors 
This is useful 
======= 
This is really useful 
>>>>>>> c2392943..... 

Da che possiamo facilmente vedere che il risultato dovrebbe essere "Questo è veramente utile"

Mi chiedo se c'è qualche aspetto negativo di diff3? Perché non è il comportamento predefinito di git?

+1

Penso che sia assolutamente l'impostazione predefinita. A proposito, un esempio grandioso e altamente illustrativo. – Wildcard

+0

Non potrei essere più d'accordo. –

risposta

12

Per altri lettori (e from this article):

Git ha un'opzione per visualizzare i conflitti di fusione formato diff3 (di default visualizza solo i due file da unire). È possibile attivare in questo modo:

git config --global merge.conflictstyle diff3 

Non c'è davvero alcun motivo per non è necessario attivare lo stile diff3, perché avete spesso bisogno l'antenato di determinare ciò che l'unione è corretta.

Questo è stato introdotto fairly early (2008), e suppongo che non sia l'impostazione predefinita, poiché un unix diff predefinito non è visualizzato come diff di 3 vie.


Come accennato in this thread, se si desidera eseguire questo comando senza impostare la configurazione, in modo da poter passare da diff normali e diff3s facilmente, questo è possibile in un caso specifico:

Se un conflitto è segnato nell'indice (cioè, lo stato si è in dopo un'unione conflittuale, ma prima si contrassegna un percorso come risolto), si può fare:

git checkout --conflict=diff3 <path...> 

Nota che in realtà sta controllando il contenuto dell'indice nell'albero di lavoro, quindi tutte le modifiche che potresti aver apportato alla copia dell'albero di lavoro in conflitto verranno sovrascritte.

+1

Grazie per la risposta. Mi chiedo perché non lo imposti di default nelle versioni recenti di git? – Pham

+0

Penso che a causa dell'origine Linux di Git: per impostazione predefinita, il diff di Git si comporta come il diff di linux. – VonC

+0

La prima riga dice "da questo articolo" ma non c'è alcun collegamento. – Wildcard

Problemi correlati