2012-02-09 13 views
54

Quando c'è un conflitto di merge in Git, junk come il seguente viene inserito nei file in conflitto. Tre domande:Unisci risoluzione del conflitto

  1. Come si leggono queste annotazioni?
  2. Quali sono alcune strategie da utilizzare per correggere questi conflitti di unione?
  3. C'è uno strumento GUI per Mac che sa leggere questi file e visualizzare le due versioni affiancate per rendere più semplice la risoluzione del problema?

enter image description here

Nota: Nel caso in cui sia rilevante, io sto usando client Mac GUI di GitHub.

+1

possibile duplicato di [Come posso risolvere i conflitti di fusione Git?] (Http://stackoverflow.com/questions/161813/how-do-i-fix-merge-conflicts-in-git) - # 1 link se si google "git merge conflict" –

risposta

20

Ora c'è una soluzione migliore rispetto a cercare di leggere i marcatori senza senso che Git inserisce nei file. Kaleidoscope 2, la seconda versione di Black Pixel del loro strumento diff, ora è anche uno strumento di unione. Non è gratuito, ma funziona magnificamente.

Dopo aver installato Kaleidoscope 2, è davvero semplice da integrare con Git.Aperto Caleidoscopio e dalla barra dei menu scegliere Kaleidoscope>Integrazione ...

Kaleidoscope's Integration menu option.

Poi vedrete questa finestra. È sufficiente scegliere Git dal menu di navigazione sinistro e quindi installare lo strumento da riga di comando ksdiff e quindi creare lo strumento di diff e unione predefinito di Galeidoscope Git.

Kaleidoscope's Git Integration dialog.

Infine, una volta che hai un conflitto di unione in Git, basta andare alla riga di comando ed eseguire git mergetool. Ora il conflitto è facile da leggere. Godere.

Kaleidoscope sane view for merge conflicts.

+2

Mi chiedo come contrassegnare risolto tramite Kaleidoscope –

+1

@FrankFang è sufficiente chiudere la finestra quando tutti i conflitti sono stati risolti. Ti verrà chiesto se l'unione è stata accettata. –

34

Tutto tra il <<<<<< e ====== viene dal HEAD di revisione, che è lo stato impegnato prima di avviare l'operazione di unione (git merge si lamenterà se l'albero è sporco, quindi dovrebbe essere equivalente alla vostra directory di lavoro).

Le parti tra ====== e >>>>>> provengono dalla versione in fase di fusione. Il testo dopo lo >>>>>> è il commento del commit che ha introdotto la modifica in conflitto.

Che c'è un indicatore di conflitto significa che la versione di base di questa parte del file è diversa da entrambe le versioni "nuove". La versione base (ultimo antenato comune) non è mostrata.

Se si desidera un'unione più comoda e una GUI disponibile, suggerisco di dare un'occhiata a kdiff3.

+0

Grazie, Simon. Non c'è qualche app GUI in grado di aprire questi file e visualizzare l'HEAD e la versione unita side-by-side? –

+0

Segui il link suggerito da @Brian sopra .... –

+0

Puoi indicarmi quali informazioni in quel collegamento sono utili? Il manuale di Git è inaccessibile per me. –

16
<<<< HEAD #Where the conflict starts 

#Previous Revision 

========== # The point where things look iffy 

#Things that changed 

>>>>> New Commit # Point where the conflict ends 

Xcode per Mac viene fornito con FileMerge cui si può accedere sulla linea di comando con opendiff.

git mergetool -t opendiff

+2

Che cosa significa se non c'era nulla per #Things che è cambiato, ma ho ancora un conflitto? – Ken

+0

git mergetool -t opendiff è stata la risposta per me. Grazie. – Billy

4

È possibile configurare un (grafico) strumento di unione e di utilizzare tale strumento per fare la risoluzione dei conflitti.

Anche dare un'occhiata al comando git mergetool - se si dispone di uno degli strumenti predefiniti installati o aver configurato qualche altro strumento, si aprirà lo strumento per la risoluzione http://schacon.github.com/git/git-mergetool.html

Se siete interessati a GUI strumenti, non devi preoccuparti di cosa significano realmente le notazioni, in quanto lo strumento GUI ti aiuterà a fare facilmente le risoluzioni. Basta capire che le parti contrassegnate con ===== e >>>>> sono sezioni di conflitto.

+1

Puoi darmi un esempio di un'applicazione Mac GUI in grado di leggere questi file e spiegare come aprirli? Ho provato ad aprire questi file in diversi strumenti diff e unire, e si aprono semplicemente come un singolo file di testo anziché essere interpretati come due file. (Qual è l'intero scopo degli indicatori di conflitto.) –

Problemi correlati