Anzeige
Anzeige
Ratgeber
Artikel merken

Branches in Git: Was dahintersteckt, wie sie funktionieren und warum sie so wichtig sind

Unser Gastautor erklärt die Hintergründe, zeigt Best Practices und typische Git-Workflows – so verpasst niemand im Team eine Abzweigung, und die Kollaboration gelingt.

Von Tobias Günther
5 Min. Lesezeit
Anzeige
Anzeige

Git ist ein Versionskontrollsystem. (Bild: Postmodern Studio / shutterstock)

Die meisten Software-Entwickler kommen früher oder später mit dem Versionskontrollsystem Git in Berührung, und spätestens im ersten großen Projekt mit mehr als einem Teammitglied steht Branching und Merging („Verzweigen und Zusammenführen“) auf der Tagesordnung. Doch was genau ist ein Branch in Git? Und was passiert bei einem Merge?

Nächster Abzweig: Teamwork

Stell dir vor, du arbeitest zusammen mit anderen Kolleginnen und Kollegen an einem Softwareprojekt; euer Team entwickelt und gestaltet einen Webshop. Vielleicht sitzt ihr in einem Büro zusammen und besprecht in den Kaffeepausen die anstehenden Aufgaben. Wahrscheinlicher ist jedoch, dass eure Arbeitsplätze an unterschiedlichen Orten sind, möglicherweise sogar in mehreren Ländern oder Zeitzonen.

Anzeige
Anzeige

Während eine Entwicklerin eine Idee für ein neues Feature hat und sofort mit dem Coden beginnen will, erhält ein Kollege einen Anruf vom Kunden: Ein Bug im Onlineshop muss schnell behoben werden. Gleichzeitig versucht ein Support-Mitarbeiter, die Dokumentation auf den neuesten Stand zu bringen.

In einem solchen Szenario ist es schwierig bis unmöglich, sich nicht gegenseitig in die Quere zu kommen. Jede Code-Änderung betrifft stets alle anderen. Eine Commit-Historie in Git mit einem einzigen Hauptzweig könnte so aussehen:

Anzeige
Anzeige

(Grafik: Tobias Günther)

Die gestrichelten roten Linien zeigen, wie unübersichtlich das Ganze ist. Welcher Commit gehört zu welchem Feature? Und auf welcher Code-Basis geht es künftig weiter?

Anzeige
Anzeige

Den Wald vor lauter Ästen sehen

Bringen wir Struktur ins Projekt und ins Team: Git Branches. Ein Branch ist eine Abzweigung von der Haupt-Entwicklungslinie – eine solche Abzweigung solltest du immer dann nehmen, wenn du eine (stabile) Code-Basis verlassen möchtest, um etwa ein neues Feature oder einen Hotfix zu implementieren. Anstelle des recht chaotischen Workflows könnte ein Projekt mit Branches dann so aussehen:

(Grafik: Tobias Günther)

Jede kleine oder große Änderung entsteht in einem eigenen Branch, der die stabile Basis nicht beeinträchtigen kann – wie in einer Art Sandbox. Tritt ein Fehler in einem Branch auf, hat das keine Auswirkung auf die anderen Zweige und sie sind weiterhin sicher. Der Hotfix funktioniert? Das neue Feature wurde ausführlich getestet und für gut befunden? Dann ist es jederzeit möglich, einen Branch mit der Hauptlinie zusammenzuführen (Merge).

Anzeige
Anzeige

Die meisten Versionskontrollsysteme (VCS) unterstützen irgendeine Form von Branching; die Funktion ist also kein Alleinstellungsmerkmal von Git. Branching in Git ist allerdings so clever und leichtgewichtig, dass das Verzweigen und Wechseln zwischen den Entwicklungszweigen nahezu verzögerungsfrei abläuft und deutlich weniger Festplattenplatz als bei anderen VCS belegt.

Fassen wir zusammen:

  • Ein Branch ist eine komplett unabhängige Entwicklungslinie mit einer eigenen History.
  • Branches benötigen weniger Festplattenplatz als simple Kopien des Projektordners.
  • Das Merging ist normalerweise unkompliziert und verläuft meist ohne Benutzerinteraktion.
  • Mit Branches ist echtes Teamwork möglich; sie fördern die Kollaboration mehrerer Entwickler.

Baumpflege: Workflow mit Branches in Git

Branches in Git gehören zum Workflow dazu. In den meisten Projekten gibt es mehrere Zweige, an denen parallel gearbeitet wird, und auch das mehrmalige Zusammenführen klappt in der Regel problemlos. In vielen Teams hat man sich auf einen bestimmten Arbeitsablauf geeinigt und festgelegt, dass nur stabiler Code im Hauptzweig (meistens Master oder Main) liegt. Immer wenn ein Feature-Branch grünes Licht bekommt und als stabil gilt, wird er mit dem Master zusammengeführt. Es gibt also zwei verschiedene Arten von Branches:

Anzeige
Anzeige
  • Langlebige Branches (long-running): Sie bleiben während der gesamten Lebensdauer eines Projektes erhalten und sind nicht an bestimmte Features gebunden. Oft gibt es neben der Hauptlinie andere langlebige Branches wie etwa Staging oder Production, die bestimmte Stadien repräsentieren.
  • Kurzlebige Branches (short-lived), auch Topic- oder Themen-Branches genannt: Neue Funktionen oder Bugfixes landen in der Regel in kurzlebigen Branches. Die Zweige sind also nicht dafür gedacht, sie während der gesamten Lebensdauer eines Projektes zu pflegen. Stattdessen werden sie erstellt, um zu experimentieren, um neue Ideen zu implementieren oder Fehler zu beheben. Sobald ein kurzlebiger Branch in einen langfristigen Branch integriert wurde, kann er gelöscht werden.

Tipp: Es hat sich als Best Practice herausgestellt, niemals auf langfristige Branches zu committen. Code sollte nur gezielt in die Hauptlinie integriert werden. In vielen Projekten gibt es eine ausgewählte Gruppe von Entwicklerinnen und Entwicklern, die dazu die alleinige Befugnis haben.

In der Praxis: Verzweigen und Zusammenführen

Zum Erzeugen, Auflisten, Umbenennen und Löschen von Branches dient das gleichnamige Kommando „git branch“. Um einen neuen Abzweig zu erstellen, schreibst du den Branch-Namen hinter das Kommando. Ohne weitere Angaben listet der Befehl vorhandene Branches auf:

$ git branch new-design
$ git branch
Bugfix#213
new-design
* master
staging

Anzeige
Anzeige

Das Sternchen zeigt an, in welchem Branch du dich gerade befindest, also den aktuellen HEAD. Die HEAD-Datei ist ein Zeiger auf die aktuelle Verzweigungsreferenz. Um in den neuen Branch zu wechseln, verwendest du das Kommando „git checkout“ – eine praktische Abkürzung ist der Parameter „-b“. So erzeugst du einen neuen Branch und wechselst gleichzeitig in ihn hinein:

git checkout -b new-design

Achtung: Das Erstellen neuer Branches mit „git branch“ passiert immer im lokalen Repository. Ins Remote Repository auf dem Server wandern die neuen Abzweigungen erst, wenn du einen bestehenden lokalen Branch über „git push -u origin “ veröffentlichst.

Anzeige
Anzeige

Du hast dich beim Erstellen eines Branches vertippt? Das kommt vor, ist aber kein Problem. Das Kommando …

git branch -m

… benennt den aktuellen HEAD um. Möchtest du einen anderen Branch umtaufen, dann gibst du hinter „git branch -m“ den alten und den neuen Namen an.

Anzeige
Anzeige

Auch hier gilt wieder: Das ist nur im lokalen Repository möglich. Um einen Remote Branch umzubenennen, sind zwei Schritte nötig: alten Branch löschen und neuen Branch aus dem lokalen Repository pushen:

git push origin –delete
git push -u origin

Zum Löschen eines Branches dient der Parameter „-d“; dahinter steht wieder der Name:

Anzeige
Anzeige

git branch -d

Es ist möglich, mehrere Branch-Namen anzugeben. Falls ein Abzweig Änderungen enthält, die noch nicht zusammengeführt wurden, funktioniert das Löschen allerdings nicht ohne Weiteres. In dem Fall hilft der Parameter „-f“, der den Vorgang erzwingt – Vorsicht, Datenverlust!

Zum Wechseln zwischen den Branches kannst du entweder „git checkout “ oder das vor rund zwei Jahren eingeführte Kommando „git switch“ verwenden.

Zum Schluss dieses Praxis-Teils wollen wir noch kurz über das Zusammenführen sprechen, das sogenannte Merging. Damit übernimmst du alle neuen Commits aus einem anderen Zweig in den aktuellen HEAD-Branch. Dazu sind lediglich zwei Kommandos erforderlich:

git switch staging
git merge feature/new-layout

Der erste Befehl wechselt in den Branch, der die Änderungen des anderen aufnehmen soll, der zweite führt den Merge mit dem Branch aus, der die Modifikationen enthält.

Auf den grünen Zweig gekommen

Branches gehören zu Git dazu wie ein Stamm und Äste zu einem Baum. Wer das Konzept einmal verstanden hat, wird sich nicht nur in eigenen Projekten leichter tun, sondern vor allem das Teamwork stärken.

Mehr zu diesem Thema
Fast fertig!

Bitte klicke auf den Link in der Bestätigungsmail, um deine Anmeldung abzuschließen.

Du willst noch weitere Infos zum Newsletter? Jetzt mehr erfahren

Anzeige
Anzeige
Schreib den ersten Kommentar!
Bitte beachte unsere Community-Richtlinien

Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.

Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.

Dein t3n-Team

Melde dich mit deinem t3n Account an oder fülle die unteren Felder aus.

Bitte schalte deinen Adblocker für t3n.de aus!
Hallo und herzlich willkommen bei t3n!

Bitte schalte deinen Adblocker für t3n.de aus, um diesen Artikel zu lesen.

Wir sind ein unabhängiger Publisher mit einem Team von mehr als 75 fantastischen Menschen, aber ohne riesigen Konzern im Rücken. Banner und ähnliche Werbemittel sind für unsere Finanzierung sehr wichtig.

Schon jetzt und im Namen der gesamten t3n-Crew: vielen Dank für deine Unterstützung! 🙌

Deine t3n-Crew

Anleitung zur Deaktivierung
Artikel merken

Bitte melde dich an, um diesen Artikel in deiner persönlichen Merkliste auf t3n zu speichern.

Jetzt registrieren und merken

Du hast schon einen t3n-Account? Hier anmelden

oder
Auf Mastodon teilen

Gib die URL deiner Mastodon-Instanz ein, um den Artikel zu teilen.

Anzeige
Anzeige