2012-04-29 23 views
6

I e il mio amico fork dal repository principale (upstream). Ieri sera, abbiamo avuto la stessa versione di questo repository nella macchina locale. Poi ho aggiunto una nuova funzione e anche il mio amico ha aggiunto un'altra nuova funzione. Il mio amico ha richiamato la richiesta al repository principale e ho unito questa richiesta pull con il repository upstream senza conflitti. E quando prendo da monte e mi unisco al mio ramo principale, questo è in conflitto. Cosa devo fare in questa situazione per risolvere i conflitti? (Il repository upstream dovrebbe avere 2 nuove funzioni dopo la risoluzione dei conflitti)Conflitto di fusione Git

risposta

4

Basta passare attraverso i file contrassegnati come in conflitto con git status e trovare i marcatori di conflitto (è possibile cercare ==== nel file). Riconciliare le modifiche tra di loro, capire se qualcos'altro inaspettato è stato rotto dalla combinazione del codice, eseguire i test e quindi utilizzare git add e git commit come normale per fare un commit che unisce la nuova funzione del tuo amico con il tuo.

Upstream: original     with friend's feature   with both 
       \ \    /    \    /
       \ -- Friend's --/     \   /
       \         \   /
        ---- Yours ------------------------- your merge 
+0

Grazie, l'informazione è davvero utile. –

1

È possibile digitare git difftool path/filename nella console di utilizzare uno strumento per risolvere il conflitto o utilizzare software Git che ha la risoluzione dei conflitti costruito. Mi piace molto SmartGit (dai creatori di SmartSVN) e TortoiseGit (molto simile a TortoiseSVN).

10

Nota che si può anche risolvere direttamente un conflitto di unione da Eclipse/Egit stessa:
Vedere "Egit: Solving Merge Conflicts":

È possibile modificare manualmente il testo sul lato sinistro o utilizzare la copia corrente cambiamento da pulsante da destra a sinistra per copiare le modifiche in conflitto da destra a sinistra.

Il passaggio successivo è dal menu di scelta rapida del file, per selezionare Team -> Aggiungi a indice. Che commettere.

merge conflict resolution in EGit

+0

Vedere anche http://stackoverflow.com/questions/11674950/how-to-do-an-ours-merge-using-the-eclipse-git-merge-tool come esempio di tale utilizzo dello strumento. – VonC