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 Branch in Git
Nozioni Fondamentali di Git

bookRisoluzione dei Conflitti di Merge

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:

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.
Tuttavia, si consiglia di utilizzare Vim per una migliore corrispondenza con i passaggi mostrati qui.

Ecco il file aperto nell'editor Vim:

File con conflitti aperto in Vim

Ora sono visibili 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 unito.

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. Questa operazione consente di modificare il testo.

2. Modifica la sezione in conflitto

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

Risoluzione del conflitto

3. Uscire dalla modalità di modifica, salvare ed uscire

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

Uscita da Vim

Committing del file

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

Aggiunta del file risolto

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

Esecuzione del commit del file

Ancora una volta, si apre l'editor di testo predefinito (Vim in questo caso) con il messaggio di commit predefinito relativo alla fusione:

Messaggio di commit predefinito

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

Ecco il messaggio di commit completo:

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.

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

Grafico della cronologia dei commit

Qui è possibile visualizzare l'ultimo commit di merge insieme alla struttura caratteristica di un three-way merge.

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

Suggested prompts:

Can you explain what a three-way merge is?

How do I interpret the output of `git log --graph --oneline`?

What should I do if I see unexpected results in the commit graph?

Awesome!

Completion rate improved to 3.57

bookRisoluzione 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:

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.
Tuttavia, si consiglia di utilizzare Vim per una migliore corrispondenza con i passaggi mostrati qui.

Ecco il file aperto nell'editor Vim:

File con conflitti aperto in Vim

Ora sono visibili 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 unito.

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. Questa operazione consente di modificare il testo.

2. Modifica la sezione in conflitto

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

Risoluzione del conflitto

3. Uscire dalla modalità di modifica, salvare ed uscire

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

Uscita da Vim

Committing del file

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

Aggiunta del file risolto

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

Esecuzione del commit del file

Ancora una volta, si apre l'editor di testo predefinito (Vim in questo caso) con il messaggio di commit predefinito relativo alla fusione:

Messaggio di commit predefinito

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

Ecco il messaggio di commit completo:

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.

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

Grafico della cronologia dei commit

Qui è possibile visualizzare l'ultimo commit di merge insieme alla struttura caratteristica di un three-way merge.

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 4. Capitolo 6
some-alt