Git
Chapters ▾ 2nd Edition

A3.4 Appendix C: Git Kommandos - Branching und Merging

Branching und Merging

Es gibt nur eine Handvoll Befehle, die die meisten Branching- und Merging-Funktionen in Git bereitstellen.

git branch

Der git branch Befehl ist eigentlich so etwas wie ein Branch-Management-Tool. Er kann die von Ihnen vorhandenen Branches auflisten, einen neuen Branch erstellen, Branches löschen und umbenennen.

Der größte Teil von Git Branching ist dem Befehl branch gewidmet und wird im gesamten Kapitel verwendet. Wir stellen ihn zuerst in Erzeugen eines neuen Branches vor und betrachten die meisten seiner anderen Funktionen (das Auflisten und Löschen) in Branch-Management..

In Tracking-Branches verwenden wir die Option git branch -u, um einen Tracking-Branch einzurichten.

Schließlich werden wir einige der Funktionen, die im Hintergrund ausgeführt werden, in Git Referenzen durchgehen.

git checkout

Der git checkout Befehl wird benutzt, um Branches zu wechseln und Inhalte in Ihr Arbeitsverzeichnis auszuchecken.

Wir sind in Wechseln der Branches zum ersten Mal dem git branch Befehl begegnet.

Wir zeigen in Tracking-Branches, wie man das Tracking von Branches mit dem --track Flag startet.

Wir verwenden ihn in Checking Out Conflicts, um Dateikonflikte mit --conflict=diff3 wieder zu integrieren.

Wir gehen auf die Beziehung zu git reset in Reset Demystified näher ein.

Abschließend gehen wir auf einige Details der Umsetzung in HEAD ein.

git merge

Das git merge Tool wird benutzt, um einen oder mehrere Branches in den von in den ausgecheckten Branch zusammenzuführen. Es wird dann der aktuelle Branch zum Ergebnis des Merge-Vorgangs weitergeführt.

Der Befehl git merge wurde zunächst in Einfaches Branching vorgestellt. Obwohl er an verschiedenen Stellen im Buch verwendet wird, gibt es nur sehr wenige Variationen des Befehls merge. In der Regel nur git merge <branch> mit dem Namen des einzelnen Branches, in dem Sie zusammenführen möchten.

Wir haben am Ende von Verteiltes, öffentliches Projekt beschrieben, wie man ein Squashed Merge macht (bei dem Git die Arbeit zusammenführt, sich aber so verhält, als wäre es nur ein neuer Commit, ohne die Historie des Branches, in dem man zusammenführt, aufzuzeichnen).

Wir haben in Fortgeschrittenes Merging viel über den Merge-Prozess und -Befehl berichtet, einschließlich des Befehls -Xignore-space-change und des --abort-Flags, um ein Merge-Problem abzubrechen.

Wir haben in Signing Commits gelernt, wie man Signaturen vor dem Zusammenführen überprüft, wenn Ihr Projekt GPG-Signaturen verwendet.

Schließlich haben wir in Subtree Merging das Mergen von Sub-Trees kennengelernt.

git mergetool

Der git mergetool Befehl startet lediglich einen externen Merge-Helfer, falls Sie Probleme mit einer Zusammenführung in Git haben.

Wir erwähnen ihn kurz in Einfache Merge-Konflikte und gehen ausführlich in Externe Merge- und Diff-Tools darauf ein, wie Sie Ihr eigenes externes Merge-Tool integrieren können.

git log

Der git log Befehl wird verwendet, um den verfügbaren, aufgezeichneten Verlauf eines Projekts, ab des letzten Commit-Snapshots, rückwärts anzuzeigen. Standardmäßig wird nur die Historie des Branchs angezeigt, in dem Sie sich gerade befinden, kann aber mit verschiedenen oder sogar mehreren Heads oder Branches belegt werden, mit denen Sie Schnittmengen haben können. Er wird häufig verwendet, um Unterschiede zwischen zwei oder mehr Branches auf der Commit-Ebene anzuzeigen.

Dieses Kommando wird in fast jedem Kapitel des Buches verwendet, um die Verlaufshistorie eines Projekts zu demonstrieren.

Wir stellen den Befehl in Anzeigen der Commit-Historie vor und gehen dort etwas ausführlicher darauf ein. Wir betrachten die Option -p und --stat, um eine Übersicht darüber zu erhalten, was in jedem Commit enthalten ist, und die Optionen --pretty und --oneline, um die Historie, zusammen mit einigen einfachen Datums- und Autoren-Filteroptionen, übersichtlicher wiederzugeben.

In Erzeugen eines neuen Branches verwenden wir ihn mit der Option --decorate, um leichter zu verdeutlichen, wo unser Branch-Pointer sich gerade befindet und wir benutzen auch die --graph Option, um zu sehen, wie die unterschiedlichen Verläufe aussehen.

In Kleines, privates Team und Commit-Bereiche behandeln wir die Syntax branchA..branchB, um mit dem git log Befehl zu überprüfen, welche Commits, relativ zu einem anderen Branch, eindeutig sind. In Commit-Bereiche gehen wir ausführlicher darauf ein.

In Merge Log und Dreifacher Punkt wird das Format branchA...branchB und die Syntax --left-right verwendet, um zu sehen, was in dem einen oder anderen Branch vorhanden ist, aber nicht in beiden. In Merge Log untersuchen wir auch, wie Sie die Option --merge verwenden können, um beim Debugging von Merge-Konflikten zu helfen, sowie die Option --cc, um Merge-Commit-Konflikte in Ihrem Verlauf zu betrachten.

In RefLog Kurzformen benutzen wir die Option -g, um den Git-RefLog über dieses Tool anzuzeigen, anstatt eine Branch-Überquerung durchzuführen.

In Suchen we look at using the -S and -L options to do fairly sophisticated searches for something that happened historically in the code such as seeing the history of a function.

In Signing Commits we see how to use --show-signature to add a validation string to each commit in the git log output based on if it was validly signed or not.

git stash

The git stash command is used to temporarily store uncommitted work in order to clean out your working directory without having to commit unfinished work on a branch.

This is basically entirely covered in Stashing and Cleaning.

git tag

The git tag command is used to give a permanent bookmark to a specific point in the code history. Generally this is used for things like releases.

This command is introduced and covered in detail in Tagging and we use it in practice in Tagging ihres Releases.

We also cover how to create a GPG signed tag with the -s flag and verify one with the -v flag in Ihre Arbeit signieren.