Verzweigungen in Git

Abgeschlossen

Angenommen, Sie sind ein Webentwickler und möchten mehr über Git für Ihre Arbeit erfahren. Sie haben zur Übung Ihrer Git-Fähigkeiten zusammen mit Ihren Freunden Alice und Bob eine einfache HTML- und CSS-Website mit Katzenfotos erstellt.

Während Ihr Projekt voranschreitet, fällt Ihnen auf, dass es nützlich wäre, an mehreren Aufgaben gleichzeitig arbeiten zu können, ohne die anderen bei ihrer Arbeit zu behindern. Sie müssen eine Möglichkeit finden, die Arbeit der einzelnen Beteiligten voneinander zu trennen, sodass neue Entwicklungen bereits vorhandene Fehlerkorrekturen nicht beeinflussen. In Git vereinfachen Verzweigungen diese Form der Zusammenarbeit.

Die Arbeit, die an einer Verzweigung vorgenommen wird, muss nicht geteilt werden und hat keine Auswirkungen auf die Arbeit in anderen Verzweigungen. Mithilfe von Verzweigungen können Sie Commits im Zusammenhang mit den einzelnen Themen zusammenhalten und gleichzeitig von anderen Arbeiten isolieren. Dies vereinfacht auch das Überprüfen und Nachverfolgen von Änderungen an einem Thema.

Moderne Softwareentwicklung erfolgt fast vollständig unter Verwendung von Verzweigungen. Das Ziel besteht darin, den Mainbranch (die Hauptverzweigung) so lange nicht zu ändern, bis die Arbeit eingecheckt werden kann. Dann pushen Sie Ihre Änderungen an den Mainbranch oder übermitteln idealerweise einen Pull Request, um die Änderungen zusammenzuführen.

Einer der Vorteile von Git gegenüber älteren Versionskontrollsystemen ist, dass Verzweigungen sehr schnell erstellt werden können. Dabei wird lediglich ein Hash von 40 Zeichen in eine Datei unter .git/heads geschrieben. Darüber hinaus können Sie schnell zwischen den Verzweigungen wechseln, da Git ganze Dateien speichert und sie nur entzippt, anstatt sie aus Listen mit Änderungen wiederherzustellen. Das Zusammenführen in Git ist nicht ganz so einfach, aber dafür eindeutig und erfolgt häufig vollständig automatisch.

Im Folgenden erfahren Sie mehr zu Verzweigung sowie ihrer Funktions- und Verwendungsweise.

Struktur und Benennung von Verzweigungen

Bei einer Verzweigung handelt es sich um eine Reihe von Commits, die sich vom Hauptstrang der Entwicklung abspalten – wie Äste bei Bäumen.

Wenn Sie von anderen Versionskontrollsystemen (VCS) auf Git umsteigen, sind Sie möglicherweise an eine etwas andere Terminologie gewöhnt. Im VCS Subversion heißt die Standardverzweigung trunk, während sie in Git master heißt. Sie können die Standardverzweigung wie jede andere Verzweigung umbenennen. In diesem Modul heißt die Standardverzweigung main.

Ein Branch beginnt in der Regel mit einem Commit in dem Standardbranch; in diesem Fall auf main. Während weitere Commits hinzugefügt werden, entsteht eine separate Versionsgeschichte für die Verzweigung. Schließlich werden die Änderungen in der Verzweigung wieder in main zusammengeführt. In diesem Modul erfahren Sie, wie Sie Commits in einem Branch durchführen und diese mit dem main-Branch zusammenführen.

Angenommen, Sie branchen die Verzweigung main. Dies sieht dann wie folgt aus:

A diagram that shows the relationship of the main branch and local branches.

Jeder Großbuchstabe im Diagramm stellt einen Commit dar. Verzweigungen erhalten Namen wie add-authentication und fix-css-bug und können auch eigene Verzweigungen aufweisen. Letztendlich ist es das Ziel, dass Entwickler*innen ihre Arbeit verrichten können, ohne einander in die Quere zu kommen, und am Ende einen Mainbranch zu erstellen, in dem sich die Arbeit aller Beteiligten widerspiegelt.

Erstellen von und Wechseln zwischen Verzweigungen („git branch“ und „git checkout“)

Verzweigungen werden häufig erstellt, um Änderungen an einem bereits vorhandenen Feature vorzunehmen. In diesem Zusammenhang werden Verzweigungen häufig als Topic-Branch oder Featurebranch bezeichnet.

Mit dem Befehl git branch erstellen Sie eine neue Verzweigung. Für das Wechseln zwischen Verzweigungen verwenden Sie den Befehl git checkout.

Sie haben checkout bereits als eine Möglichkeit kennengelernt, Dateien in der Arbeitsstruktur zu ersetzen, indem Sie sie aus dem Index abrufen. checkout aktualisiert alle Elemente der Arbeitsstruktur und des Index ohne Pfade in der Argumentliste entsprechend dem angegebenen Commit (in diesem Fall der Anfang der Verzweigung).

Zusammenführen von Verzweigungen („git merge“)

Wenn Sie einen Teil Ihrer Arbeit in einer Verzweigung abgeschlossen haben (z. B. ein Feature oder eine Fehlerbehebung), sollten Sie diese Verzweigung wieder mit dem Mainbranch zusammenführen. Für das Zusammenführen einer bestimmten Verzweigung mit der aktuellen Verzweigung verwenden Sie den Befehl git merge.

Wenn Sie z. B. in einer Verzweigung mit dem Namen my-feature arbeiten, entspricht der Workflow dem folgenden Beispiel:

# Switch back to the main branch
git checkout main

# Merge my-feature branch into main
git merge my-feature

Nachdem Sie diese Befehle verwendet und alle Mergekonflikte aufgelöst haben (diese werden später in diesem Modul beschrieben), befinden sich alle Änderungen aus dem my-feature-Branch in main.