Neue Branches erstellen
In den vorangegangenen Artikeln dieser Reihe (siehe Linksammlung am Ende) haben wir die Grundlagen der Source Control kennengelernt. Dazu gehören das Erstellen eines lokalen Repositories sowie das Speichern und Verwerfen von Änderungen.
In diesem Teil der Reihe setzen wir uns nun nach Repository und Commit mit einem weiteren wichtigen Bestandteil von Git auseinander: dem sogenannten Branch.
Was ist ein Branch?
Einfach ausgedrückt enthält ein Branch eine Sammlung von Commits. Standardmäßig enthält jedes neue Xcode-Projekt auf Basis von Git einen solchen Branch. Der trägt den Titel master. Einsehen lässt sich der über den Source Control Navigator in Xcode. Dort finden sich innerhalb eines Repositories drei Ordner: Branches, Tags und Remotes. Unter Branches wird jener eben genannter master mit dem Zusatz (current) aufgeführt.
(current) gibt hierbei an, dass es sich bei dem zugehörigen Branch um den aktuell aktiven Branch handelt. Alle Commits, die in dem gezeigten Szenario innerhalb des zugrundeliegenden Projekts ausgeführt werden, landen somit im master-Branch.
Der große Vorteil der Source Control besteht darin, dass man beliebig viele weitere Branches für ein Repository erzeugen und fließend zwischen ihnen wechseln kann. Änderungen am Projekt landen dann nur in dem jeweils aktiven Branch und nicht in den anderen.
Das Nutzen mehrerer Branches ist beispielsweise sinnvoll, wenn man für eine bereits veröffentlichte App an einem neuen großen Feature arbeitet. Für dieses Feature könnte man einen neuen Branch erzeugen, in dem alle entsprechenden Anpassungen an der App vorgenommen werden. Parallel dazu kann man während dieser Entwicklungszeit die App über den ursprünglichen Branch durch kleine Bugfix-Änderungen aktuell halten.
Würde es in dem beschriebenen Szenario nur einen Branch und damit nur eine Code-Basis für alle Änderungen geben, müssten für die zwischendurch durchgeführten und veröffentlichten Bugfixes alle Änderungen für das große Feature rückgängig gemacht, auskommentiert oder anderweitig auf inaktiv gesetzt werden. So etwas wäre nicht nur mit enormen Aufwand verbunden, sondern auch immens fehleranfällig. Vergisst man beispielsweise auch nur eine bestimmte Funktion korrekt anzupassen, kann es im schlimmsten Fall zu vollkommen unvorhergesehenen Problemen kommen.
Und selbst wenn alles klappt, muss man nach Ausrollen des Bugfix-Updates wieder alle Feature-Änderungen einpflegen.
Zusammenführen von Branches
Doch womöglich fragt ihr euch gerade, was euch die zwei Branches nützen, wenn sich deren Code-Basis parallel weiter entwickelt und somit voneinander unterscheidet? Dann hat man auf der einen Seite die großen Änderungen für das neue Feature und auf der anderen Seite kleinere Bugfixes. Muss man den Code von einem Branch nun händisch in den anderen übertragen?
Nein, das gehört zu den enorm großen Vorteilen der Versionsverwaltung. Stattdessen kann man zu einem gegebenen Zeitpunkt – beispielsweise wenn das große neue Feature fertig und bereit für die Veröffentlichung ist – zwei Branches zusammenführen, indem man deren Inhalte mergt. Auf diese Art und Weise wandern die Änderungen eines Branches in einen anderen Branch, sodass letzterer beide Welten miteinander vereint. Diesen Aspekt bei der Arbeit mit Branches werden wir uns im kommenden Artikel dieser Reihe näher ansehen.
Neue Branches erstellen und auschecken
Um einen neuen Branch in Xcode zu erstellen wählt man zunächst einen bestehenden per Sekundärklick aus. Im sich öffnenden Kontextmenü findet sich dann ein Eintrag mit dem Titel Branch from „<Branch-Name>“….
Wählt man diesen Eintrag aus, bittet Xcode darum, den gewünschten Namen für den neuen Branch einzugeben. Der neue Branch entspricht hierbei zunächst exakt dem, der als Basis für diese Aktion ausgewählt wurde und übernimmt all dessen Commits; im gezeigten Screenshot ist das also der master-Branch.
Sobald der neue Branch erstellt wurde, taucht er umgehend in der Liste der Branches des zugehörigen Repositories auf und ist auf aktiv gesetzt (zu erkennen am Zusatz (current)).
Änderungen, die noch nicht committet wurden, stehen übrigens nach Erstellung und Wechsel des Branches ohne Einschränkungen im neuen Branch zur Verfügung.
Branch wechseln
Stehen einem so nun mehrere Branches zur Verfügung, ist auch ab und an ein Wechsel der Branches nötig (abhängig davon, an welchem Teil des Projekts man weiterarbeiten möchte). Um den aktiven Branch zu wechseln, klickt man zunächst den gewünschten Ziel-Branch mittels Sekundärklick an. Im Kontextmenü wählt man anschließend den Eintrag Checkout… aus.
Xcode fragt anschließend noch einmal nach, ob man den Branch tatsächlich wechseln möchte. Nach einer weiteren Bestätigung durch Klick auf Checkout befindet man sich auf dem gewählten Branch. Alle noch nicht committeten Änderungen vom zuvor aktiven Branch werden hierbei in den Ziel-Branch übernommen.
Fazit
Das Erstellen neuer Branches in Xcode gestaltet sich sehr einfach und unkompliziert. Man wählt zunächst den Basis-Branch aus und erstellt auf dessen Grundlage einen neuen. Der Wechsel zwischen verfügbaren Branches gestaltet sich als ebenso simpel.
Generell ermöglichen Branches es so, parallel an verschiedenen Teilen eines Projekts zu arbeiten. Gerade bei der Arbeit im Team ist das ein enorm wichtiger Aspekt.
Euer Thomas
Weitere Artikel dieser Reihe
- Teil 1: Das Repository: https://letscode.thomassillmann.de/grundlagen-der-source-control-teil-1/
- Teil 2: Änderungen speichern mit Commits: https://letscode.thomassillmann.de/grundlagen-der-source-control-teil-2/
- Teil 3: Änderungen verwerfen: https://letscode.thomassillmann.de/grundlagen-der-source-control-teil-3/
Schreibe einen Kommentar