La facile capacità di unione di Git è uno dei suoi punti di forza. Durante una fusione, Git usa unione rapida quando nota che il capo del ramo attuale è un antenato del commit che stai cercando di fondersi. In una fusione rapida, non c'è un nuovo commit. Git sposta il puntatore. Se questo comportamento non è desiderabile, è possibile utilizzare il flag no-ff per creare un nuovo commit per la fusione.
Come si unisce unisce e senza avanzare rapidamente
Dopo un avanzamento rapido, la tua storia di Git sembrerà così:
C0 -> C1 -> C2-> C3
Per lo stesso numero di commit, ecco una storia di unione senza avanzare rapidamente:
Nel primo caso, non vi è alcuna indicazione che vi fosse alcuna ramificazione. Nel secondo caso, la storia sta mostrando un commit C4 per indicare dove si è verificata l'accusa.
Camminando attraverso un esempio
Creerai un repository git, creerai un ramo e quindi proverai le fusioni e senza rapidamente.
Innanzitutto, è possibile creare il repository Git con i seguenti passaggi:
$ mkdir my_projectOra creiamo una filiale chiamata funzionalità e commettiamo alcune modifiche:
Caratteristiche della filiale $ gitTorniamo a Master Branch e unisci le caratteristiche di ramo:
$ git checkout master
$ git unisci funzionalità
Produzione:
Aggiornamento 08076fb… 9ee88ebSe controlli la storia, vedrai:
$ git log --onelineQuindi, tutti i commit dalla filiale di caratteristiche sono ora nella filiale principale. Se continui a apportare modifiche al padrone, non c'è modo di sapere quando la filiale delle caratteristiche è stata unita.
Ripeti la sezione 1 per una nuova cartella.
Quindi, prova un'unione senza avanzamento rapido:
$ git checkout master
Feature $ git --No-FF
Aprirà quanto segue nell'editor di testo predefinito del tuo GIT:
Unisci le caratteristiche di ramo "
# Inserisci un messaggio di commit per spiegare perché questa unione è necessaria,
# Soprattutto se si fonde un upstream aggiornato in una filiale di argomenti.
#
# Le righe che iniziano con '##' verranno ignorate e un messaggio vuoto si interrompe
# il commit.
Modifica i commenti. In questo caso, puoi semplicemente aggiungere "C4:" Prima di "Under Branch" Funzionalità "". L'output dovrebbe apparire così:
Unione fatta dalla strategia "ricorsiva".Ora se controlli la storia, dovrebbe apparire come quanto segue:
$ git log --onelinePuoi vedere che anche se hai le stesse modifiche esatte, questa versione di Munge ha il commit C4 extra che indica la fusione delle funzionalità di ramo in Master.
Conclusione
Il Git unisce la bandiera no-ff aiuta a creare una cronologia più leggibile. Ti consente di mettere tag che mostrano chiaramente dove si sono verificate le fusioni. Può farti risparmiare tempo e fatica durante il debug.