Come unire un ramo Git in un altro
L'unione richiede due comandi, ma la direzione fa inciampare le persone e Git può avanzare velocemente o creare un commit di unione. Ecco la sequenza esatta, cosa significa avanzamento veloce e quale opzione utilizzare quando.
Scritto da Kodmora
La software house dietro GitTree
- Unisci
- Rami
- Unisci conflitti
In questa pagina
Per unire `feature` in `main`, passa al ramo che riceve i commit, quindi unisci l'altro: `git switch main` seguito da `git merge feature`. Il ramo su cui ti trovi è quello che cambia. Se main non ha nuovi commit, Git lo fa avanzare velocemente. Altrimenti crea un commit di unione e si interrompe se le due parti sono in conflitto.
Come posso unire un ramo passo dopo passo?
# get the latest
git fetch origin
# go to the branch that receives the work
git switch main
git pull --ff-only
# bring the other branch in
git merge feature/search
# publish it
git pushInizia con un albero pulito: esegui prima il commit o lo stash. Se cambi idea prima o poi, `git merge --abort` ti riporta indietro.
In che direzione va una fusione?
git merge X significa sempre “porta X nel ramo in cui mi trovo”. Quindi l'unione di feature in main viene eseguita da main, mentre l'aggiornamento di feature con l'ultimo main viene eseguito da feature:
# keep a feature branch up to date
git switch feature/search
git fetch origin
git merge origin/mainChe cos'è un'unione rapida?
Se il ramo ricevente non ha commit propri da quando l'altro ramo lo ha lasciato, non c'è nulla da combinare. Git sposta il puntatore del ramo in avanti fino all'ultimo commit dell'altro ramo e non aggiunge alcun commit di unione. La storia rimane una linea retta. Git stampa Fast-forward quando ciò accade.
# before
main: A---B
\
feature: C---D
# after a fast-forward merge
main: A---B---C---DQuando entrambi i rami hanno nuovi commit, un avanzamento veloce è impossibile, quindi Git effettua un merge commit con due genitori. La lezione di avanzamento rapido e la lezione sull'unione di rami divergenti mostrano entrambe nella pratica.
Cosa fanno --ff-only, --no-ff e --squash?
| Opzione | Risultato | Usalo quando |
|---|---|---|
| (nessuno) | Avanza velocemente se possibile, altrimenti un commit di unione | La maggior parte delle fusioni quotidiane |
--ff-only | Avanza velocemente o interrompi con un errore | Aggiornamento di main dal remoto |
--no-ff | Sempre un commit di unione | Desideri che ogni funzionalità sia visibile nella cronologia |
--squash | Tutte le modifiche in stage, nessun commit, nessuna fusione registrata | Vuoi un commit ordinato |
git merge --ff-only origin/main
git merge --no-ff feature/search
git merge --squash feature/search
git commit -m "feat(search): quick open"Cosa succede quando l'unione è in conflitto?
Git si ferma e contrassegna i file in conflitto. Modificali, git add ciascuno, quindi esegui git commit per completare l'unione. Come risolvere i conflitti di unione spiega gli indicatori.
Posso schierarmi automaticamente da una parte?
# take their side wherever hunks conflict
git merge -X theirs feature/search
# take our side wherever hunks conflict
git merge -X ours feature/search
# during a merge, take one side of a whole file
git checkout --theirs path/to/file
git add path/to/fileDovrei unire o rebase?
Merge mantiene la cronologia esattamente come è avvenuta e non riscrive mai i commit, quindi è sempre al sicuro sui rami condivisi. Rebase riproduce i tuoi commit sopra un altro ramo per una linea retta, ma li riscrive, quindi mantienilo solo sui rami che usi. La lezione sull'unione rispetto al rebase prevede dei compromessi.
Cosa devo fare dopo la fusione?
# check that the branch is fully merged
git branch --merged
# delete it locally and on the remote
git branch -d feature/search
git push origin --delete feature/searchCome eliminare un ramo copre la pulizia. Per annullare un'unione già inviata, vedi come annullare un commit di unione.
Come unire un ramo in GitTree
Controlla il ramo ricevente
Fai doppio clic sul ramo che dovrebbe ricevere i commit, ad esempio
develop.Scegli il ramo da unire
Fare clic con il pulsante destro del mouse sull'etichetta del ramo con il nuovo lavoro e scegliere Unisci... in.... Puoi anche trascinare un'etichetta sull'altra.
Leggi l'anteprima
GitTree controlla prima e ti dice Unisce senza conflitti. o quali file si bloccheranno in caso di conflitto.
Scegli come viene registrato
In Registra come, seleziona Avanti veloce se possibile, altrimenti un commit di unione, Sempre un commit di unione, Solo avanzamento veloce o Squash in modifiche graduali (nessun commit), quindi premi Unisci.

Vedi unire rami per ogni opzione.
Domande frequenti
L'unione elimina l'altro ramo?
No. L'altro ramo rimane esattamente dov'era. Eliminalo tu stesso quando non ti serve più.
Come posso unire un ramo nel ramo principale su GitHub?
Apri una richiesta pull e premi Unisci. Se invece unisci localmente, premi main successivamente. La protezione del ramo potrebbe richiedere il percorso della richiesta pull.
Cosa significa “Già aggiornato”?
Il ramo su cui ti trovi contiene già tutti i commit dell'altro ramo, quindi non c'è nulla da unire. Controlla di essere sul ramo giusto ed esegui git fetch se ti aspettavi nuovi commit remoti.
Cosa significa “rifiutarsi di unire storie non correlate”?
I due rami non condividono alcun commit comune, spesso perché un repository è stato inizializzato due volte. Se intendi davvero unirti a loro, aggiungi --allow-unrelated-histories.
Una fusione di squash è una vera fusione?
Uno squash prepara le modifiche combinate senza creare un commit né registrare una relazione di merge nella cronologia. Devi creare il commit. Anche dopo, Git non considera il branch sorgente come integrato, quindi git branch -d può rifiutare di eliminarlo.
Fonti
Le affermazioni su altri prodotti sono state confrontate con le rispettive pagine ufficiali in data 8 novembre 2026. Cambiano prezzi e caratteristiche; le pagine dei venditori sono la fonte della verità.
