Skip to main content

# Git-Grundlagen: Fork vs. Branch

In der Versionsverwaltung mit Git (z. B. auf GitHub, GitLab oder Gitea) begegnen uns ständig die Begriffe Fork und Branch. Obwohl beide dazu dienen, isoliert an Code zu arbeiten, unterscheiden sie sich grundlegend in ihrer Ebene und ihrem Zweck.

1. Was ist ein Branch? (Der "Abzweig")

Ein Branch ist ein interner Abzweig innerhalb eines einzigen Repositorys. Man kann es sich wie einen Ast an einem Baum vorstellen: Er gehört zum selben Stamm.

  • Ebene: Repository-intern.
  • Zweck: Entwicklung von Features, Bugfixes oder Experimenten, ohne den Hauptzweck (meist main oder master) zu stören.
  • Zusammenführung: Wenn die Arbeit fertig ist, wird der Branch per Merge oder Rebase wieder in den Hauptstamm integriert.
  • Berechtigung: Man benötigt Schreibzugriff auf das Repository, um einen Branch zu erstellen.

Anwendungsbeispiel: Du arbeitest an deinem Projekt und möchtest ein neues Dashboard-Design testen. Du erstellst den Branch feature/new-dashboard, arbeitest dort und führst ihn später wieder mit dem Hauptprojekt zusammen.


2. Was ist ein Fork? (Die "Kopie")

Ein Fork ist eine vollständige Kopie eines Repositorys auf der Ebene des Benutzeraccounts. Es wird ein komplett neues, eigenständiges Repository erstellt, das jedoch eine Verbindung zum Original ("Upstream") hält.

  • Ebene: Account- / Server-Ebene.
  • Zweck: Ermöglicht es, an Projekten zu arbeiten, für die man keine direkten Schreibrechte hat (z. B. Open-Source-Projekte). Oder um eine völlig eigene Version eines Projekts zu starten.
  • Zusammenführung: Änderungen aus einem Fork werden dem Original-Projekt meist über einen Pull Request (PR) oder Merge Request (MR) angeboten.
  • Berechtigung: Jeder kann einen Fork von einem öffentlichen Repository erstellen.

Anwendungsbeispiel: Du nutzt ein Tool von einem anderen Entwickler auf GitHub. Du möchtest eine Funktion hinzufügen, hast aber keine Rechte in seinem Repo. Du machst einen Fork in deinen Account, änderst den Code und schickst ihm deine Änderungen als Pull Request.


3. Die Hauptunterschiede im Überblick

Merkmal Branch Fork
Ort Innerhalb desselben Repositorys Kopie in einen anderen Account
Zugehörigkeit Teil des Original-Projekts Eigenes, unabhängiges Projekt
Schreibrechte Erfordert Rechte am Projekt Erfordert keine Rechte am Original
Sichtbarkeit Meist für das Team gedacht Oft für externe Beiträge genutzt
Zusammenführung Einfacher Merge Pull Request (PR)

4. Warum wir beides nutzen (Workflow)

In modernen Workflows (wie du es in deinem Blogpost beschreibst) ergänzen sich beide:

  1. Man erstellt einen Fork, um eine isolierte Spielwiese für ein gesamtes Projekt zu haben (z.B. für K.I.-Experimente).
  2. Innerhalb dieses Forks arbeitet man mit Branches, um verschiedene Funktionen (CSS, Features, Dokumentation) sauber voneinander zu trennen, bevor man sie im Fork zusammenführt.