Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Risoluzione dei Conflitti di Merge | Lavorare con i Rami in Git
Nozioni Fondamentali di Git

Risoluzione dei Conflitti di Merge

Scorri per mostrare il menu

Risoluzione dei conflitti

Nel capitolo precedente si è verificato un conflitto di merge, quindi ora è il momento di risolverlo. Per prima cosa, aprire il file branch_learning.txt nell'editor Vim utilizzando il seguente comando:

vim branch_learning.txt
Apertura di Vim

Se Vim non è installato, è possibile utilizzare un altro editor di testo come nano o atom sostituendo vim con il nome del proprio editor nel comando sopra indicato.
Tuttavia, si consiglia di utilizzare Vim per una migliore corrispondenza con i passaggi illustrati qui.

Ecco il file aperto nell'editor Vim:

File con conflitti aperto in Vim

Ora è possibile vedere i marcatori di conflitto che indicano le sezioni in conflitto.
Questi marcatori utilizzano frecce e simboli speciali per evidenziare le differenze tra i rami:

  • <<<<<<< HEAD: indica l'inizio delle modifiche dal ramo corrente (master);
  • =======: separa le modifiche del ramo corrente (HEAD) da quelle del ramo che si sta unendo;
  • >>>>>>> feature/new-feature: indica la fine delle modifiche dal ramo che si sta unendo.

Per risolvere il conflitto, scegliere una delle seguenti opzioni:

  • Mantenere le modifiche del ramo corrente (master);
  • Mantenere le modifiche del ramo unito (feature/new-feature);
  • Modificare manualmente il contenuto.

Modificare manualmente il file combinando le modifiche di entrambi i rami seguendo questi passaggi:

1. Entrare in modalità di modifica

Per prima cosa, entrare in modalità inserimento in Vim premendo i. Questo consente di modificare il testo.

2. Modifica la sezione in conflitto

Successivamente, combina le righe di entrambi i rami in sequenza. Il contenuto risultante del file dovrebbe essere il seguente:

New branch
New line from the master branch
New line from the feature branch
Risoluzione del conflitto

3. Esci dalla modalità di modifica, salva ed esci

Premere il tasto Escape per uscire dalla modalità di inserimento. Quindi digitare :wq e premere Invio per salvare le modifiche e uscire da Vim:

Uscita da Vim

Commit del file

Poiché i conflitti sono stati risolti, aggiungere il file branch_learning.txt all'area di staging e verificare lo stato:

git add branch_learning.txt
git status
Aggiunta del file risolto

Il file è stato modificato e aggiunto con successo all'area di staging. Ora procedere con il commit:

git commit
Commit del file

Ancora una volta, si apre l'editor di testo predefinito (Vim nel mio caso) con il messaggio di commit predefinito relativo al merge:

Messaggio di commit predefinito

Entra in modalità inserimento in Vim premendo i, quindi modifica il messaggio aggiungendo la riga Kept lines from both branches per descrivere come sono stati risolti i conflitti.

Ecco il messaggio di commit completo:

Merge branch 'feature/new-feature'

Kept lines from both branches

Per uscire dalla modalità inserimento, salvare le modifiche e chiudere Vim, premere il tasto Escape, quindi digitare :wq e premere Invio.

Salvataggio del messaggio modificato ed uscita da Vim

Il commit è stato eseguito con successo e il conflitto di merge è ora risolto.

Merge a tre vie

Esaminiamo ora la nostra cronologia dei commit come un grafo (opzione --graph) con una riga per ogni commit (opzione --oneline):

git log --graph --oneline
Grafo della cronologia dei commit

Qui puoi vedere l'ultimo commit di merge insieme alla struttura caratteristica di un three-way merge.

question mark

Qual è il modo consigliato per risolvere un conflitto di merge in Git?

Seleziona la risposta corretta

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 4. Capitolo 6

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Sezione 4. Capitolo 6
some-alt