Git

Git Merge -no-off-Option

Git Merge -no-off-Option

Grundlegendes zur Option Git Merge no-ff

Die einfache Merge-Fähigkeit von git ist eine seiner Stärken. Während einer Zusammenführung verwendet git Fast-Forward-Zusammenführung, wenn es feststellt, dass der HEAD des aktuellen Zweigs ein Vorfahre des Commits ist, das Sie zusammenführen möchten. Bei einem Fast-Forward-Merge gibt es kein neues Commit. Git bewegt nur den Zeiger. Wenn dieses Verhalten nicht erwünscht ist, können Sie mit dem Flag no-ff einen neuen Commit für die Zusammenführung erstellen.

So sieht Merge mit und ohne Fast-Forward aus

Nach einem schnellen Vorlauf sieht Ihr Git-Verlauf so aus:

C0 -> C1  -> C2-> C3

Für die gleiche Anzahl von Commits hier ein Merge-Verlauf ohne Fast-Forward:

Im ersten Fall gibt es keinen Hinweis auf eine Verzweigung. Im zweiten Fall zeigt der Verlauf einen C4-Commit an, um anzuzeigen, wo die Zusammenführung stattgefunden hat.

Durch ein Beispiel gehen

Sie erstellen ein Git-Repository, erstellen einen Branch und versuchen dann die Zusammenführungen mit und ohne Fast-Forward.

Abschnitt 1: Einrichtung

Zuerst können Sie das Git-Repository mit den folgenden Schritten erstellen:

$ mkdir mein_projekt
$ cd mein_projekt
$ git init
$ berühren a.TXT
$ git add -A
$ git commit -m "C0: Hinzufügen von a.TXT"

Lassen Sie uns nun einen Branch namens features erstellen und einige Änderungen vornehmen:

$ git branch-Funktionen
$ git Checkout-Funktionen
$ berühren b.TXT
$ git add -A
$ git commit -m "C1: Hinzufügen von b.TXT"
$ berühren c.TXT
$ git add -A
$ git commit -m "C2: Hinzufügen von c.TXT"
$ berühren d.TXT
$ git add -A
$ git commit -m "C3: d . hinzufügen.TXT"

Abschnitt 2: Zusammenführen mit Schnellvorlauf

Kehren wir zum Master-Branch zurück und führen den Features-Branch darin zusammen:

$ git checkout master
$ git Merge-Funktionen

Ausgabe:

08076fb wird aktualisiert… 9ee88eb
Schneller Vorlauf
b.txt | 0
c.txt | 0
d.txt | 0
3 Dateien geändert, 0 Einfügungen (+), 0 Löschungen (-)
Modus erstellen 100644 b.TXT
Modus erstellen 100644 c.TXT
Modus erstellen 100644 d.TXT

Wenn Sie den Verlauf überprüfen, sehen Sie:

$ git log --oneline
9ee88eb C3: Hinzufügen von d.TXT
c72b92c C2: c . hinzufügen.TXT
2e4039e C1: b . hinzufügen.TXT
08076fb C0: a . hinzufügen.TXT

Alle Commits aus dem Features-Zweig befinden sich jetzt also im Master-Zweig. Wenn Sie weiterhin Änderungen am Master vornehmen, können Sie nicht feststellen, wann der Feature-Branch darin zusammengeführt wurde.

Abschnitt 3: Ohne Schnellvorlauf

Wiederholen Sie Abschnitt 1 für einen neuen Ordner.

Versuchen Sie dann eine Zusammenführung ohne Schnellvorlauf:

$ git checkout master
$ git merge --no-ff-Funktion

Es öffnet sich Folgendes im Standard-Texteditor Ihres Git:

'Features' des Zweiges zusammenführen
# Bitte geben Sie eine Commit-Nachricht ein, um zu erklären, warum diese Zusammenführung notwendig ist,
# vor allem, wenn es einen aktualisierten Upstream in einen Themenzweig einfügt.
#
# Zeilen, die mit '#' beginnen, werden ignoriert und eine leere Nachricht wird abgebrochen
# das Commit.

Ändere die Kommentare. In diesem Fall können Sie einfach "C4:" vor "Zweig 'Features' zusammenführen" hinzufügen. Die Ausgabe sollte so aussehen:

Zusammenführung nach der 'rekursiven' Strategie.
b.txt | 0
c.txt | 0
d.txt | 0
3 Dateien geändert, 0 Einfügungen (+), 0 Löschungen (-)
Modus erstellen 100644 b.TXT
Modus erstellen 100644 c.TXT
Modus erstellen 100644 d.TXT

Wenn Sie nun den Verlauf überprüfen, sollte dieser wie folgt aussehen:

$ git log --oneline
e071527 C4: Zweig-'Features' zusammenführen
bb79c25 C3: d . hinzufügen.TXT
692bd8c C2: c . hinzufügen.TXT
a0df62a C1: b . hinzufügen.TXT
7575971 C0: a . hinzufügen.TXT

Sie können sehen, dass diese Merge-Version, obwohl Sie genau die gleichen Änderungen haben, den zusätzlichen C4-Commit hat, der die Zusammenführung von Funktionszweigen in Master bedeutet.

Fazit

Das Flag git merge no-ff hilft dabei, einen besser lesbaren Verlauf zu erstellen. Es ermöglicht Ihnen, Tags zu platzieren, die deutlich zeigen, wo die Zusammenführungen stattgefunden haben. Es kann Ihnen beim Debuggen Zeit und Mühe sparen.

Weitere Studie:

Verweise:
So erfassen und streamen Sie Ihre Gaming-Sitzung unter Linux
In der Vergangenheit galt das Spielen von Spielen nur als Hobby, aber mit der Zeit verzeichnete die Spieleindustrie ein enormes Wachstum in Bezug auf ...
Beste Spiele zum Spielen mit Handtracking
Oculus Quest hat kürzlich die großartige Idee des Hand-Trackings ohne Controller vorgestellt. Mit einer ständig steigenden Anzahl von Spielen und Akti...
So zeigen Sie OSD-Overlay in Vollbild-Linux-Apps und -Spielen an
Das Spielen von Spielen im Vollbildmodus oder die Verwendung von Apps im ablenkungsfreien Vollbildmodus kann Sie von relevanten Systeminformationen ab...