Simyl
simylflow
Kursübersicht
Modul 2: Versionskontrolle & Git-Grundlagen
Lektion 3 von 5
15 Min.

Branches und Pull Requests

Die Kollaborationsebene von Git.

1Warum Branches existieren

Branches existieren, weil echte Engineering-Arbeit nicht in einer einzigen linearen Abfolge stattfindet. In einem Team von fünf Personen können zu einem beliebigen Zeitpunkt drei Features in Arbeit sein, ein Bugfix im Review und eine Infrastrukturänderung auf ein Deployment-Fenster warten. Ohne Branches würde all diese Arbeit in einem einzigen gemeinsamen Workspace kollidieren – halbfertige Features würden sich gegenseitig kaputt machen, ein Bugfix würde versehentlich mit einem unvollständigen Feature ausgeliefert, Infrastrukturänderungen würden sich mit Produktcode verheddern.

Ein Branch gibt jedem Arbeitsstrom seinen eigenen isolierten Kontext. Du kannst Dinge kaputt machen, experimentieren, aggressiv refactoren – und nichts davon betrifft deine Teammitglieder, bis du dich explizit für ein Merge entscheidest. Diese Isolation macht parallele Arbeit möglich, ohne ständigen Koordinationsaufwand.

Aber Isolation ist nur die Hälfte des Werts. Branches senken auch die Kosten für Experimente. Du willst einen anderen Algorithmus ausprobieren? Branch, Prototyp, Benchmark. Wenn er schneller ist, merge. Wenn nicht, lösche den Branch. Gesamtkosten: null Schaden an der gemeinsamen Codebasis, null Rauschen in der Commit-Historie, null Rollbacks nötig. Teams, die frei branchen, probieren mehr Ansätze aus und finden bessere Lösungen. Teams, die Branching als schwergewichtig behandeln (oder es ganz überspringen, indem sie direkt auf main committen) experimentieren entweder weniger oder experimentieren gefährlich.

2Pull Requests als soziale Verträge

Ein Pull Request ist ein Vorschlag: „Hier ist, was ich geändert habe, hier ist warum, und ich möchte, dass jemand es sich ansieht, bevor es gemergt wird." Das klingt einfach, aber es stellt einen fundamentalen Wechsel von impliziter zu expliziter Qualitätskontrolle dar.

Ohne PRs ist Code Review optional, ad-hoc und inkonsistent. Vielleicht schaut sich jemand deinen Code an, bevor er ausgeliefert wird, vielleicht nicht. Vielleicht schauen sie sich einen Teil davon an. Vielleicht schauen sie ihn sich an, nachdem er bereits in Produktion ist. PRs machen Review zu einem Gate – Code erreicht main nicht, bis mindestens ein anderer Engineer ihn gelesen, die Absicht verstanden und den Ansatz genehmigt hat.

Es geht nicht darum, Bugs zu finden (obwohl das auch passiert). Es geht um gemeinsames Ownership. Wenn ein PR reviewt und genehmigt wurde, ist die Änderung nicht mehr „Sarahs Code" – es ist der Code des Teams. Der Reviewer sagt: „Ich verstehe das, ich stimme dem Ansatz zu, und ich bin damit einverstanden, es zu warten." Dieses verteilte Ownership bedeutet, dass kein einzelner Engineer zum Bottleneck oder Single Point of Failure wird.

PRs erstellen auch eine Entscheidungsdokumentation. Die Beschreibung erklärt das Warum, das Diff zeigt das Was, und die Review-Kommentare erfassen die abgewogenen Trade-offs. Drei Monate später, wenn jemand fragt „warum haben wir es so gebaut?", hat der PR die Antwort – einschließlich der Alternativen, die diskutiert und abgelehnt wurden.

3Code Review als Gespräch, nicht als Gatekeeping

Code Review läuft schief, wenn es zu einem Gatekeeping-Ritual wird – ein Senior Engineer blockiert Merges mit Style-Nitpicks, während das Team wartet. Das ist kein Review; das ist ein Bottleneck, der sich als Qualität verkleidet.

Gutes Code Review ist ein Gespräch zwischen Peers. Die Aufgabe des Reviewers ist nicht zu beweisen, dass er mehr weiß – sondern zu fragen „habe ich deine Absicht verstanden?" und „hast du diesen Edge Case bedacht?" Die besten Review-Kommentare sind Fragen, keine Anweisungen. „Was passiert, wenn diese Liste leer ist?" lehrt mehr als „Füge hier einen Null-Check hinzu."

Drei Prinzipien, die Review produktiv halten:

  • Reviewe den Ansatz, nicht die Syntax. Linter fangen Formatierung ab. Menschen sollten sich auf Logik, Architektur und Benennung konzentrieren – Dinge, die Maschinen nicht bewerten können.
  • Antworte innerhalb von Stunden, nicht Tagen. Ein PR, der 72 Stunden im Review liegt, ist blockierte Arbeit. Wenn du heute nicht reviewen kannst, sag es – lass jemand anderen übernehmen.
  • Unterscheide blockierend von nicht-blockierend. „Das wird in Produktion crashen" ist ein Blocker. „Ich würde diese Variable anders benennen" ist ein Vorschlag. Vermische sie, und jedes Review fühlt sich wie ein Kampf an.

Review-Kultur ist auch eines der effektivsten Onboarding-Tools, die ein Team hat. Ein neuer Engineer, der PR-Reviews liest, lernt die Muster, Präferenzen und vergangenen Fehler des Teams schneller, als es jede Dokumentation lehren könnte. Das Review-Archiv ist ein lebendiger Style Guide.

Langlebige Branches sind technische Schulden

Jeden Tag, den ein Branch getrennt von main lebt, wird das Merge schwieriger. Branches sollten Tage leben, nicht Wochen.

Wichtige Erkenntnisse
  • Branches lassen dich experimentieren, ohne gemeinsame Arbeit kaputt zu machen
  • PRs sind die Art, wie Teams Code Review explizit machen
  • Langlebige Branches sind Schulden – merge oft
Häufige Fehler, die es zu vermeiden gilt
  • Branch-Namen wie `fix-stuff` oder `john-branch`
  • PRs, die 50 Dateien auf einmal ändern