Git merge -no -FF -Option

Git merge -no -FF -Option

Verständnis von Git Fusion No-FF-Option

Die einfache Verschmelzungsfähigkeit von Git ist eine ihrer Stärken. Während einer Zusammenführung verwendet Git eine schnelle Vorwärtsverschmelzung, wenn festgestellt wird, dass der Kopf des aktuellen Zweigs ein Vorfahr des Commits ist. In einer Fast-Forward-Zusammenführung gibt es kein neues Commit. Git bewegt nur den Zeiger. Wenn dieses Verhalten nicht wünschenswert ist, können Sie die No-FF-Flag verwenden, um einen neuen Commit für die Zusammenführung zu erstellen.

Wie das Zusammenführen mit und ohne schnelle Vorlauf aussieht

Nach einem schnellen Vorlauf sieht Ihre Git-Geschichte so aus:

C0 -> C1 -> C2-> C3

Für die gleiche Anzahl von Commits finden Sie hier eine Zusammenführungsgeschichte ohne schnelle Vorlauf:

Im ersten Fall gibt es keinen Hinweis darauf, dass es eine Verzweigung gab. Im zweiten Fall zeigt die Geschichte einen C4.

Durch ein Beispiel gehen

Sie erstellen ein Git-Repository, erstellen einen Zweig und versuchen die Zusammenschlüsse mit und ohne schnell vorwärts.

Abschnitt 1: Setup

Zunächst können Sie das Git -Repository mit den folgenden Schritten erstellen:

$ mkdir my_project
$ cd my_project
$ git init
$ touch a.txt
$ git add -a
$ Git Commit -m "C0: Hinzufügen a.txt"

Erstellen wir nun einen Zweig namens Funktionen und begehen einige Änderungen:

$ Git Branch Funktionen
$ git Checkout -Funktionen
$ touch b.txt
$ git add -a
$ git Commit -m "C1: Hinzufügen von B.txt"
$ touch c.txt
$ git add -a
$ git Commit -m "C2: C fügen c.txt"
$ touch d.txt
$ git add -a
$ Git Commit -m "C3: Hinzufügen von D Hinzufügen von D.txt"

Abschnitt 2: Zusammenführen mit schnellem Vorspeisen

Kehren wir zurück zu Master Branch und Fusion Features Branch in ihn:

$ Git Checkout Master
$ git merge Funktionen

Ausgang:

Aktualisieren von 08076FB… 9ee88EB
Schnell vorwärts
B.txt | 0
C.txt | 0
D.txt | 0
3 Dateien geändert, 0 Insertionen (+), 0 Löschungen (-)
Erstellen Sie den Modus 100644 B.txt
Erstellen Sie den Modus 100644 C.txt
Erstellen Sie den Modus 100644 D.txt

Wenn Sie den Geschichte überprüfen, werden Sie sehen:

$ Git -Protokoll -Einmal
9EE88EB C3: Hinzufügen von d.txt
C72B92C C2: Hinzufügen von C.txt
2E4039E C1: Hinzufügen von B.txt
08076FB C0: Hinzufügen a.txt

Alle Commits aus Features Branch befinden sich jetzt im Master -Zweig. Wenn Sie weiterhin Änderungen an Master vornehmen, gibt es keine Möglichkeit zu wissen, wann die Features -Zweigstelle in ihn zusammengeführt wurde.

Abschnitt 3: Ohne schnell vorzuziehen

Wiederholen Sie den Abschnitt 1 für einen neuen Ordner.

Versuchen Sie dann eine Zusammenführung ohne schnelles Vorspeisen:

$ Git Checkout Master
$ git merge-no-ff-Funktion

Es wird Folgendes in der Standardtexteditor Ihres Git -Standardtextes öffnen:

Merge Branch 'Funktionen'
# Bitte geben Sie eine Commit -Nachricht ein, um zu erklären, warum diese Zusammenführung erforderlich ist,
# vor allem, wenn es einen aktualisierten Upstream in eine Themenabteilung verschmilzt.
#
# Zeilen, die mit '#' beginnen, werden ignoriert, und eine leere Nachricht abbricht
# Das Commit.

Ändern Sie die Kommentare. In diesem Fall können Sie einfach "C4:" hinzufügen, bevor "Branch" -Funktionen mergen ". Die Ausgabe sollte so aussehen:

Zusammenführen durch die "rekursive" Strategie.
B.txt | 0
C.txt | 0
D.txt | 0
3 Dateien geändert, 0 Insertionen (+), 0 Löschungen (-)
Erstellen Sie den Modus 100644 B.txt
Erstellen Sie den Modus 100644 C.txt
Erstellen Sie den Modus 100644 D.txt

Wenn Sie nun die Geschichte überprüfen, sollte es wie folgt aussehen:

$ Git -Protokoll -Einmal
E071527 C4: Merge Branch 'Funktionen'
BB79C25 C3: Hinzufügen von d.txt
692BD8C C2: C -Hinzufügen von C.txt
A0DF62A C1: Hinzufügen von B.txt
7575971 C0: Hinzufügen a.txt

Sie können sehen, dass diese Version von Merge, obwohl Sie genau die gleichen Änderungen haben.

Abschluss

Das Git Fusion No-FFF-Flag hilft dabei, eine lesbarere Geschichte zu erstellen. Es ermöglicht Ihnen, Tags zu setzen, die deutlich zeigen, wo die Zusammenführungen aufgetreten sind. Es kann Ihnen Zeit und Mühe beim Debuggen ersparen.

Weiteres Studium:

  • https: // git-scm.com/docs/git-merge
Verweise:
  • Stapelüberlauf: Was-is-the-Differenz-zwischen-Git-und-Git-Merge-no-fff
  • https: // www.Atlassian.COM/GIT/Tutorials/Verwenden von Branchen/Git-Merge