isarcode

Development

Branch, Merge, Fork: neue Ideen ohne Chaos, mit Pizza erklärt (Teil 2)

Auf einen Blick

  • Die Margherita ist der offizielle Stand, das, was jeder bekommt. In der Git-Welt heißt der main (oder master, nur ein anderer Name).
  • Willst du etwas Neues ausprobieren, baust du es daneben auf (ein Branch), ohne die Margherita anzufassen.
  • Ist die neue Zutat gut, wird sie Teil der Pizza. Das nennt man Merge.
  • Ein Fork ist mehr: Du machst aus der Pizza eine ganz eigene, unabhängige Linie mit eigenem Stand.

In diesem Teil erklärt: Branch · Feature-Branch · Merge · Fork · Main / Master

In Teil 1 haben wir geklärt, was Versionierung, Git und ein Repo sind. Jetzt geht es um die Frage, die im Alltag am häufigsten aufkommt: Wie kommen neue Ideen in ein Projekt, ohne dass das, was gerade funktioniert, kaputtgeht? Und wieder hilft die Pizza.

Die Margherita ist der offizielle Stand: main

Stell dir deine Pizza als das fertige Produkt vor. Die Margherita ist die Standard-Pizza, die auf der Karte steht und die jeder Gast bekommt. In der Git-Welt ist das der main (früher meist master genannt, dazu gleich mehr): der offizielle, ausgelieferte Stand. Was in main steht, ist das, was zählt. Deshalb baut man daran nicht mal eben leichtfertig herum.

Etwas Neues ausprobieren, ohne die Margherita zu ruinieren: der Branch

Jetzt kommt ein Wunsch rein: „Ich hätte gern eine Salami-Variante.“ So ein Wunsch heißt im Fachjargon Feature Request, auf Deutsch schlicht die Anforderung, etwas Neues zu bauen.

Du wärst verrückt, dafür die Margherita der wartenden Gäste umzubauen. Stattdessen fängst du daneben an: Du nimmst die Margherita als Ausgangspunkt und baust in Ruhe deine Salami-Version auf. Die Original-Pizza bleibt völlig unberührt.

Genau das ist ein Branch (englisch für Zweig, gesprochen „Bräntsch“). Auf Deutsch: eine Abzweigung, an der man gefahrlos werkeln kann. Weil es hier um genau eine neue Sache geht (die Salami), nennt man das eine Feature-Branch, den Zweig für ein bestimmtes neues Feature.

Die Salami kommt auf die Pizza: der Merge

Deine Salami-Variante ist fertig und gut. Jetzt soll sie offiziell werden, also Teil der echten Pizza. Dieses Zusammenführen heißt Merge (englisch für verschmelzen, gesprochen „Mördsch“). Aus Margherita plus erprobter Salami wird jetzt offiziell die Pizza Salami. Die neue Zutat ist eingearbeitet, sauber und bewusst.

Meistens klappt das reibungslos. Manchmal haben zwei Köche gleichzeitig an derselben Stelle geschraubt, der eine will Basilikum, der andere Oregano. Dann gibt es einen Merge-Konflikt: Das System sagt „hier widersprechen sich zwei Änderungen, das kann ich nicht allein entscheiden“, und ein Mensch legt fest, was draufkommt. Kein Drama, nur eine bewusste Entscheidung an der richtigen Stelle.

Eine ganz eigene Pizza-Linie: der Fork

Ein Branch ist eine Zutat mehr auf derselben Pizza. Ein Fork ist etwas anderes: Du nimmst die ganze Pizza und machst daraus deine eigene, unabhängige Linie.

Beispiele: Du nimmst die Margherita, wirfst die Tomatensauce raus und machst eine weiße Pizza. Oder du nimmst nur den Teig und machst daraus Pizzabrot. Ab diesem Moment lebt deine Version ihr eigenes Leben, mit ihrem eigenen offiziellen Stand, ihrem eigenen main. Sie hat mit dem Original nichts mehr zu tun.

Das ist ein Fork (englisch für Gabelung): eine eigenständige Kopie des ganzen Projekts, die einen eigenen Weg geht. In der Open-Source-Welt entstehen so aus einem Projekt viele.

Main oder Master? Nur ein Namenswechsel

Kurz zur häufigsten Verwirrung: Mal heißt der offizielle Stand main, mal master. Das ist dieselbe Sache, nur ein neuerer Name. Früher war „master“ üblich, heute nennen die meisten Projekte und Plattformen wie GitLab und GitHub ihn „main“. Inhaltlich ändert sich nichts, es ist und bleibt die Pizza auf der Karte.

Was das für dein Projekt heißt

Der Grund, warum das existiert, ist einfach: So kann ein Team an vielen neuen Dingen gleichzeitig arbeiten, ohne sich gegenseitig das Funktionierende kaputtzumachen. Jede neue Idee wächst sicher in ihrem eigenen Zweig heran und kommt erst dann in die offizielle Version, wenn sie fertig und geprüft ist.

Wie diese Prüfung automatisch abläuft und wie die fertige Pizza dann sicher zum Gast kommt, schauen wir uns in Teil 3 an.

Häufige Fragen

Was ist ein Branch in Git? Eine Abzweigung, an der man etwas Neues bauen kann, ohne den offiziellen Stand (main) anzufassen. Ist das Neue fertig, wird es zusammengeführt.

Was ist ein Merge? Das Zusammenführen einer fertigen Änderung mit dem offiziellen Stand. Aus der Margherita plus erprobter Salami wird die offizielle Pizza Salami.

Was ist der Unterschied zwischen Branch und Fork? Ein Branch ist eine Variante innerhalb desselben Projekts. Ein Fork ist eine komplett eigene, unabhängige Kopie mit eigenem offiziellen Stand.

Was bedeutet main bzw. master? Beides bezeichnet den offiziellen, ausgelieferten Stand eines Projekts. „main“ ist die modernere Bezeichnung für dasselbe.

Und jetzt?

Du willst, dass neue Features in deinem Projekt sauber und ohne Risiko fürs Laufende entstehen? Genau so arbeiten wir. Lass uns reden, wir zeigen dir, wie das in der Praxis aussieht.