Vai al contenuto
GitTree
Guide Git4 minuti di lettura

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

Pubblicato Aggiornato
  • 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 push

Inizia 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/main

Che 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---D

Quando 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?

Come git merge può registrare il risultato
OpzioneRisultatoUsalo quando
(nessuno)Avanza velocemente se possibile, altrimenti un commit di unioneLa maggior parte delle fusioni quotidiane
--ff-onlyAvanza velocemente o interrompi con un erroreAggiornamento di main dal remoto
--no-ffSempre un commit di unioneDesideri che ogni funzionalità sia visibile nella cronologia
--squashTutte le modifiche in stage, nessun commit, nessuna fusione registrataVuoi 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/file

Dovrei 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/search

Come 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

  1. Controlla il ramo ricevente

    Fai doppio clic sul ramo che dovrebbe ricevere i commit, ad esempio develop.

  2. 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.

  3. Leggi l'anteprima

    GitTree controlla prima e ti dice Unisce senza conflitti. o quali file si bloccheranno in caso di conflitto.

  4. 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.

Unione della funzione/ricerca nello sviluppo in GitTree, con il controllo dei conflitti prima che qualcosa cambi.
Unione della funzione/ricerca nello sviluppo in GitTree, con il controllo dei conflitti prima che qualcosa cambi.GitTree interfaccia con un repository dimostrativo.

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à.