Menu
Coddy logo textTech

Git Merge

Ultimo aggiornamento

git merge porta i commit di un altro branch in quello corrente. Quando il branch corrente non si è allontanato, Git fa un fast-forward, spostando semplicemente in avanti il puntatore. Quando entrambi i branch hanno nuovi commit, Git crea un commit di merge che collega le due cronologie. A differenza del rebase, il merge conserva la cronologia esatta di entrambi i branch.

Prova questi comandi nel terminal playground: una vera shell nel tuo browser, senza installare nulla.

git merge unisce le due cronologie con un commit di merge; entrambi i branch mantengono i loro commit originali.

Sintassi

ComandoCosa fa
git merge featureUnisce feature nel branch corrente
git merge --no-ff featureCrea sempre un commit di merge
git merge --ff-only featureFa il merge solo se è possibile un fast-forward
git merge --squash featureCombina i commit del branch in uno solo
git merge --abortAnnulla un merge con conflitti

Fast-forward vs commit di merge

ScenarioFast-forwardCommit di merge (--no-ff)
Crea un nuovo commitNoSì
Conserva traccia del branchNoSì
Avviene quandoIl branch corrente non si è allontanatoEntrambi i branch hanno nuovi commit

Risolvere un conflitto di merge

Quando entrambi i branch hanno modificato le stesse righe, Git si ferma.

PassoComandoRisultato
1Modifica i file in conflittoScegli le righe corrette e rimuovi i marcatori
2git add <file>Segna il conflitto come risolto
3git commitCompleta il merge

Domande frequenti su git merge

Come unisco un branch in un altro con Git?
Passa al branch in cui vuoi fare il merge (per esempio git switch main), poi esegui git merge feature. Git unisce i commit di feature in main, con un fast-forward oppure creando un commit di merge se entrambi i branch si sono allontanati.
Che differenza c'è tra un fast-forward e un commit di merge?
Un fast-forward avviene quando il branch corrente non si è mosso da quando l'altro branch se n'è separato: Git fa semplicemente scorrere in avanti il puntatore, senza nuovi commit. Un commit di merge viene creato quando entrambi i branch hanno nuovi commit e collega le loro cronologie. Usa --no-ff per creare sempre un commit di merge, oppure --ff-only per richiedere un fast-forward.
Come risolvo un conflitto di merge?
Quando un merge va in conflitto, Git segna le parti in contrasto nei file interessati con i marcatori <<<<<<<, ======= e >>>>>>>. Modifica ogni file per tenere il contenuto corretto e rimuovi i marcatori, poi esegui git add sui file risolti e git commit per completare il merge.
Come annullo o interrompo un merge?
Se il merge è ancora in corso (conflitti non risolti), esegui git merge --abort per annullarlo e ripristinare lo stato precedente. Se il merge è già stato completato in locale, git reset --hard ORIG_HEAD riporta il branch alla posizione precedente al merge (a differenza di HEAD~1, funziona correttamente anche dopo un fast-forward, ma scarta il lavoro non committato). Se hai già fatto push del merge, usa git revert -m 1 <merge-hash>.
Posso esercitarmi online?
Sì. Apri il terminal playground per eseguire git merge in una vera shell nel tuo browser, senza installare nulla. Il corso interattivo gratuito di Git di Coddy spiega anche il merge e la risoluzione dei conflitti passo dopo passo.
Illustrazione dei linguaggi di programmazione di Coddy

Impara Git con Coddy

INIZIA