Realizato da

Pubblicato il

git

merge

conflict



come risolvere un conflitto durante un merge in Git guida italiano

Ciao a tutti e benvenuti in questa guida dove vi spiegherò nel modo più semplice possibile, coma risolvere un conflitto in Git quando si esegue un merge.

Che cos’è un conflitto in Git?

In Git, un conflitto o conflict può presentarsi quando due o più cambiamenti concorrenti sono stati applicati sulla stessa linea di codice, o quando una persona sta lavorando su un file che è stato eliminato.

I conflitti tra due cambiamenti sullo stesso codice, avvengono quando si esegue un merge di due branch. In questo caso bisogna scegliere manualmente quale dei due cambiamenti, vogliamo tenere nel codice.

Per esempio se due programmatori stanno modificando lo stesso file e linea su due branch diversi, Git mostrerà un errore di conflitto quando si proverà a unire (merge) i due branch. 

L’errore mostrato avrebbe un aspetto del tipo:


CONFLICT (content): Merge conflict in lib/hello.html

Automatic merge failed; fix conflicts and then commit the result.

Merge di due branch causa conflitto, come risolvere?

Per risolvere i problemi di conflitto tra due branch in Git, bisogna fare un nuovo commit dove manualmente specifichiamo come risolvere i conflitti. Vediamo come:

Prima di tutto aprite il Terminal e navigate alla directory della vostra repository Git che causa il conflict.

cd repositoryConflict


Utilizzando il comando git status su una repository con dei conflict presenti vi mostrerà quale file sta causando il conflitto.

git status


Vedrete in output un risultato come questo (in questo caso il file fileConflitto.js sta causando il conflict)


# On branch branch
# You have unmerged paths.
# (fix conflicts and run "git commit")
#
# Unmerged paths:
# (use "git add ..." to mark resolution)
#
# both modified: fileConflitto.js
#
no changes added to commit (use "git add" and/or "git commit -a")


Ora che sappiamo quale sia il file che sta causando il conflict del merge, vediamo come risolvere questo problema:

Utilizzando il vostro text edito preferito, aprite il file contenente il conflitto (Per noi fileConflitto.js)

Git automaticamente inserisce nel file dei caratteri per mostrarvi dove il conflitto sia presente. 

L’inizio del conflitto è dato da: 

<<<<<<< HEAD

I due cambiamenti concorrenti sono separati da:

=======

seguito da :

>>>>>>> nome-branch 

per marcare la fine del conflict.

Vediamo un esempio:

fileConflitto.js

…
var x = 10;
<<<<<<< HEAD
x = x + 1;
=======
x = x – 1;
>>>>>>> branch-sottrazione
…


Nell’esempio superiore vediamo che in un branch la variabile x è stata incrementata, ed in un altro branch è stata diminuita. Questo causa un conflitto quando si esegue il merge.

Per eliminare il conflitto in Git bisogna manualmente eliminare il comando non desiderato, oltre ad eliminare i delimitatori del conflict <<<<<<<, =======, >>>>>>>

Per esempio se vogliamo incrementare la variabile x dopo aver eseguito il merge, possiamo riscrivere il nostro file in questo modo:

…
var x = 10;
x = x + 1;
…

Ora non ci rimane altro che aggiungere i cambiamenti eseguiti alla repository Git:

git add .

Ed infine eseguire il commit dei nostri cambiamenti (senza alcun conflitto)

git commit –m 'risolto i conflitti Git'

Ora potete eseguire il merge dei due branch tranquillamente. Se vi sono ulteriori conflitti con il merge, dovrete manualmente risolvere ogni conflict.

Grazie per aver seguito questa guida dove affrontiamo il Problema di conflitto nel merge di Git. Se avete qualche domanda su questo tutorial commentate in basso e sarò lieto di rispondervi :)

Ci vediamo alla prossima :)

Se hai una domanda puoi farla anche nel nostro forum informatico di Devnews.it

Grazie per aver letto questa guida di Devnews.it

Spero ti sia stata utile in qualche modo. Ti prego di supportare questa pagina mettendo mi piace alle nostre pagine social cliccando un basso, dove pubblichiamo regolermente notizie, tutorial e fatti curiosi sull'informatica. Grazie e ci vediamo alla prossima :)