Informatik

Versionsverwaltung: Git, Branches und Teamarbeit

Versionsverwaltung: Git, Branches und Teamarbeit
Versionsverwaltung: Git, Branches und Teamarbeit
Für Quiz, Lückentext, Lernkarten und Fortschritt ist JavaScript nötig. Alle Inhalte und Lösungen bleiben direkt lesbar.

Eine Versionsverwaltung hält Änderungen an Dateien nachvollziehbar fest. Dadurch kannst du frühere Stände vergleichen und wiederherstellen, parallele Arbeiten trennen und Beiträge kontrolliert zusammenführen.

Auf dieser Seite lernst du den grundlegenden Git-Arbeitsablauf kennen und entscheidest, wie ein Team Änderungen ohne Verlust in einen gemeinsamen Projektstand integriert.

Deine Lernziele

Hake ab, was du schon kannst — und komm am Ende hierher zurück!

Warum Dateinamen nicht reichen

Stell dir vor, drei Personen bearbeiten einen Vertragsentwurf. Nach kurzer Zeit gibt es Dateien wie Vertrag_final, Vertrag_final_neu und Vertrag_final_neu2. Die Namen verraten nicht zuverlässig, welche Fassung aktuell ist, wer etwas geändert hat oder welche Änderungen zusammengehören.

Definition

Versionsverwaltung

Eine Versionsverwaltung, kurz VCS, erfasst Änderungen an Dateien oder Dokumenten. Sie bewahrt frühere Stände in einer Historie auf und ordnet Änderungen unter anderem einer Person und einem Zeitpunkt zu.

Eine Versionsverwaltung hilft dir dabei,

  • frühere Projektstände wiederherzustellen,
  • Änderungen zwischen Ständen zu vergleichen,
  • die Entstehung eines Fehlers nachzuvollziehen,
  • parallele Beiträge zu koordinieren und
  • ausgewählte Änderungen zusammenzuführen.

Dabei entstehen nicht einfach viele unabhängig benannte Dateien. Die Versionen gehören zu einer gemeinsamen, geordneten Projekthistorie.

Beispiel

Lea überarbeitet eine Webseite und entfernt versehentlich einen funktionierenden Abschnitt. In einer Versionsverwaltung kann sie den aktuellen Stand mit einer früheren Version vergleichen. Anschließend stellt sie gezielt den benötigten Inhalt wieder her, statt eine vermutlich passende Sicherungskopie zu suchen.

Teste dich
Frage 1 von 1LeichtWelcher Vorteil gehört unmittelbar zur Versionsverwaltung?
Lösung: Frühere Projektstände können nachvollziehbar wiederhergestellt werden. — Eine Versionsverwaltung dokumentiert Veränderungen und bewahrt frühere Stände. Sie garantiert weder fehlerfreie Inhalte noch konfliktfreie Zusammenarbeit.
Wie aus einer Änderung ein Commit wird

Bei Git durchläuft eine Änderung mehrere Bereiche. Erst diese Trennung macht es möglich, bewusst auszuwählen, was in die Historie aufgenommen wird.

Definition

Repository

Ein Repository, kurz Repo, enthält die versionierten Projektdaten und ihre Änderungshistorie.

Die drei wichtigsten Bereiche eines lokalen Git-Projekts sind:

  1. Arbeitsverzeichnis: Hier öffnest und bearbeitest du die normalen Projektdateien.
  2. Staging Area: Hier stellst du die Änderungen zusammen, die zum nächsten Commit gehören sollen.
  3. Lokales Repository: Hier speichert Git die erstellten Commits als nachvollziehbare Historie.
Definition

Commit

Ein Commit ist ein festgehaltener Projektstand mit einer kurzen Beschreibung. Er bündelt die zuvor ausgewählten Änderungen zu einer nachvollziehbaren Einheit.

Speichern und Committen sind deshalb nicht dasselbe. Wenn du eine Datei im Editor speicherst, liegt die Änderung zunächst nur im Arbeitsverzeichnis. Erst nach der Auswahl für die Staging Area und dem Commit gehört sie zur Git-Historie.

Beispiel

Noah ergänzt eine Suchfunktion und korrigiert gleichzeitig einen Tippfehler in einer unabhängigen Hilfeseite.

  1. Er prüft zunächst die veränderten Dateien, zum Beispiel mit git status.
  2. Er wählt nur die Dateien der Suchfunktion für die Staging Area aus.
  3. Er erstellt einen Commit mit einer Nachricht wie Suchfeld mit Ergebnisliste ergänzen.
  4. Den unabhängigen Tippfehler nimmt er später in einen eigenen Commit auf.

So lässt sich aus der Historie erkennen, welche Änderungen sachlich zusammengehören.

Merke

Ein guter Commit ist klein genug, um verständlich zu bleiben, aber vollständig genug, um eine sachlich zusammengehörige Änderung abzubilden.

Teste dich
Frage 1 von 2LeichtWo befindet sich eine gerade gespeicherte, aber noch nicht ausgewählte Änderung?
Lösung: Im Arbeitsverzeichnis — Eine gespeicherte Bearbeitung liegt zunächst im Arbeitsverzeichnis. Für einen Commit wird sie ausgewählt und in die Staging Area aufgenommen.
Frage 2 von 2MittelWarum trennt Noah Suchfunktion und Tippfehler in zwei Commits?
Lösung: Die Historie zeigt dadurch zwei sachlich getrennte Änderungen. — Sachlich begrenzte Commits sind leichter zu prüfen, zu erklären und bei Bedarf gezielt rückgängig zu machen.
Wie lokale und entfernte Repositorys zusammenarbeiten

Ein lokales Repository liegt auf deinem Rechner. Ein Remote-Repository ist ein anderes verbundenes Repository, das ein Team häufig als gemeinsamen Austauschpunkt verwendet.

Wichtige Vorgänge sind:

  • Clone: Ein vorhandenes Remote-Repository wird einschließlich seiner Repository-Historie auf den eigenen Rechner kopiert.
  • Commit: Eine Änderung wird zunächst im lokalen Repository festgehalten. Dafür ist keine Serververbindung nötig.
  • Push: Lokale Commits werden an ein Remote-Repository übertragen.
  • Pull: Spätere Änderungen aus einem Remote werden in das bereits verbundene lokale Repository übernommen.

Ein Remote ist nicht der Ort, an dem jede Änderung sofort entsteht. Der normale Git-Ablauf beginnt lokal. Erst ein Push veröffentlicht die betreffenden Commits im verbundenen Remote-Repository.

Gut zu wissen

Ein vollständiger Klon enthält die versionierte Repository-Historie. Nicht festgehaltene Dateien aus fremden Arbeitsverzeichnissen gehören jedoch nicht dazu. Deshalb ersetzt ein Klon nicht jede denkbare Datensicherung.

Beispiel

Mina klont zu Beginn das gemeinsame Projekt. Danach kann sie lokal Dateien bearbeiten und Commits erstellen. Vor der Integration ihres Beitrags übernimmt sie die aktuellen Teamänderungen. Anschließend überträgt sie ihre eigenen Commits zum gemeinsamen Remote.

Teste dich
Frage 1 von 1MittelWelche Reihenfolge beschreibt einen sinnvollen Austausch?
Lösung: Lokal bearbeiten und committen, aktuelle Teamänderungen berücksichtigen, eigene Commits übertragen — Git trennt lokale Arbeit vom Austausch. Commits entstehen lokal und werden anschließend mit anderen Repositorys abgeglichen.
Wie Branches parallele Arbeit ermöglichen

Ein Team möchte neue Funktionen entwickeln, ohne den gemeinsamen Hauptstand bei jedem Zwischenschritt zu verändern. Dafür kann es Branches verwenden.

Definition

Branch

Ein Branch ist ein Entwicklungszweig innerhalb der Projekthistorie. Auf ihm können eigene Commits entstehen, während andere Zweige unabhängig weiterlaufen.

Der Hauptzweig heißt heute häufig main. Ein Team kann für eine neue Funktion einen Feature-Branch anlegen, die Funktion dort schrittweise entwickeln und testen und sie anschließend in den Hauptzweig übernehmen.

Definition

Merge

Ein Merge führt die Entwicklungsverläufe zweier Branches zusammen.

Git kann viele Änderungen automatisch zusammenführen. Haben zwei Branches jedoch dieselbe Stelle unterschiedlich verändert, kann ein Mergekonflikt entstehen. Das ist kein Datenverlust, sondern eine Entscheidung, die das Team bewusst treffen muss.

Beispiel

Aylin entwickelt im Branch suche eine Suchleiste. Ben ändert gleichzeitig im Hauptzweig die Navigation. Beide bearbeiten dieselbe Menüzeile unterschiedlich.

Beim Zusammenführen meldet Git einen Konflikt. Aylin vergleicht beide Fassungen, erstellt eine gemeinsame Zeile mit Navigation und Suchleiste, testet das Ergebnis und hält die Lösung in einem neuen Commit fest. Erst danach wird der Beitrag integriert.

Merke

Ein Mergekonflikt bedeutet: Git kann die beabsichtigte gemeinsame Fassung nicht eindeutig bestimmen. Menschen müssen den Inhalt prüfen, entscheiden und das Ergebnis testen.

Teste dich
Frage 1 von 2MittelWas ist bei einem Mergekonflikt zuerst nötig?
Lösung: Die widersprechenden Änderungen inhaltlich vergleichen — Prüfe, was beide Änderungen bewirken sollen. Erstelle daraus eine fachlich richtige gemeinsame Fassung und teste sie vor der Integration.
Frage 2 von 2SchwerZwei Branches verändern verschiedene Dateien. Was ist am wahrscheinlichsten?
Lösung: Git kann die Änderungen häufig automatisch zusammenführen. — Konflikte entstehen vor allem bei nicht eindeutig vereinbaren Änderungen. Getrennte Änderungen lassen sich häufig automatisch integrieren.
Welche Architektur passt zur Zusammenarbeit

Versionsverwaltung kann lokal, zentral oder verteilt organisiert sein. Die Modelle unterscheiden sich vor allem darin, wo die vollständige Historie liegt und wie Beteiligte zusammenarbeiten.

ModellAblage der HistorieStärkeGrenze
lokalauf einem Rechnereinfache persönliche VersionierungVerlust oder Ausfall dieses Rechners gefährdet die Historie
zentralin einem gemeinsamen Server-Repositorygemeinsamer Überblick und zentrale RechteverwaltungServer und Netzwerk werden zur zentralen Abhängigkeit
verteiltin den vollständigen Repository-Klonen der Beteiligtenlokale Commits und flexible SynchronisierungBeiträge müssen weiterhin abgestimmt und integriert werden

Git ist ein verteiltes Versionskontrollsystem. Trotzdem verwendet ein Team in der Praxis häufig ein offizielles Remote-Repository als gemeinsamen Bezugspunkt. Technisch vorhandene Verteilung und organisatorisch vereinbarte Zuständigkeit widersprechen sich nicht.

Bei parallelen Textänderungen wird häufig nach dem Prinzip Copy–Modify–Merge gearbeitet: Beteiligte bearbeiten eigene Arbeitskopien und führen die Ergebnisse danach zusammen. Bei schwer automatisch zusammenführbaren Binärdateien kann dagegen ein Sperrverfahren sinnvoll sein, bei dem nur eine Person die Datei zur gleichen Zeit bearbeitet.

Teste dich
Frage 1 von 2MittelWarum ist ein zentraler Server eine einzelne Ausfallstelle?
Lösung: Die vollständige gemeinsame Historie kann nur dort liegen und der Austausch hängt von seiner Erreichbarkeit ab. — Fällt die zentrale Stelle aus, können Zugriff und Zusammenarbeit blockiert sein. Ohne Sicherung kann außerdem die dort allein gespeicherte Historie verloren gehen.
Frage 2 von 2SchwerEin Git-Team besitzt vollständige lokale Klone und vereinbart trotzdem ein offizielles Remote. Welche Aussage trifft zu?
Lösung: Die Klone verteilen die Historie; das offizielle Remote ordnet den gemeinsamen Austausch. — Ein verteiltes System kann organisatorisch einen gemeinsamen Bezugspunkt nutzen, ohne seine lokalen Repositorys und Offline-Commits aufzugeben.
Wie ein Team Beiträge kontrolliert integriert

Eine nachvollziehbare Historie entsteht nicht allein durch die Software. Das Team braucht einen vereinbarten Arbeitsablauf.

Ein möglicher Ablauf für eine neue Funktion ist:

  1. Einen eigenen Feature-Branch anlegen.
  2. Die Funktion in kleinen, sachlich begrenzten Commits entwickeln.
  3. Aussagekräftige Commit-Nachrichten schreiben.
  4. Den aktuellen Hauptstand berücksichtigen und Konflikte im Feature-Branch lösen.
  5. Die Funktion testen.
  6. Den Beitrag über eine Merge Request zur Prüfung bereitstellen.
  7. Rückmeldungen einarbeiten und den geprüften Beitrag integrieren.

Eine Merge Request macht den gewünschten Zusammenschluss sichtbar. Andere Teammitglieder können die Änderung prüfen und freigeben. Review und Tests ergänzen die Versionsverwaltung: Die Historie zeigt, was geändert wurde; die Prüfung bewertet, ob die Änderung fachlich richtig und funktionsfähig ist.

Beispiel

Ein Team ergänzt eine Passwortanzeige. Der Commit Dateien geändert ist kaum hilfreich. Die Nachricht Schalter zum Einblenden des Passworts ergänzen beschreibt die Änderung deutlich genauer.

Vor der Integration prüft das Team:

  • Erfüllt die Funktion die vereinbarte Anforderung?
  • Funktioniert der bisherige Programmteil weiterhin?
  • Ist die Änderung verständlich und auf das Feature begrenzt?
  • Wurden Konflikte inhaltlich richtig gelöst?
Teste dich
Frage 1 von 1SchwerEin Feature funktioniert allein, beschädigt nach dem Merge aber die Anmeldung. Welche Maßnahme hätte das Risiko am direktesten geprüft?
Lösung: Die integrierte Fassung vor der Freigabe testen — Ein isoliert funktionierendes Feature kann andere Programmteile beeinflussen. Deshalb muss das Team auch den zusammengeführten Stand testen.
Karteikasten
Karteikasten

Überlege zuerst selbst und drehe die Karte anschließend zum Prüfen um.

Alles auf einen Blick
Mindmap
  • Versionsverwaltung
    • Historie
      • Änderungen nachvollziehen
      • frühere Stände wiederherstellen
    • lokaler Git-Ablauf
      • Arbeitsverzeichnis
      • Staging Area
      • Commit
    • Zusammenarbeit
      • Remote austauschen
      • Branches trennen
      • Merges integrieren
    • Qualität
      • kleine verständliche Commits
      • Review und Tests
Abschluss-Check
Teste dich
Frage 1 von 3LeichtWelche Aussage unterscheidet Speichern und Committen korrekt?
Lösung: Speichern ändert die Arbeitsdatei; ein Commit nimmt ausgewählte Änderungen in die Git-Historie auf. — Die Trennung ermöglicht dir, bewusst festzulegen, welche Änderungen gemeinsam in die Historie gehören.
Frage 2 von 3MittelZwei Personen entwickeln gleichzeitig verschiedene Funktionen. Welcher Ablauf unterstützt eine kontrollierte Integration?
Lösung: Eigene Branches verwenden, verständlich committen, Änderungen prüfen, testen und zusammenführen — Branches trennen parallele Entwicklungen. Kleine Commits, Abgleich, Review und Tests machen die spätere Integration nachvollziehbar.
Frage 3 von 3SchwerSamira löst einen Mergekonflikt, indem sie ohne Prüfung immer ihre eigene Fassung behält. Was ist daran problematisch?
Lösung: Die andere Änderung kann notwendig sein; die gemeinsame Fassung muss inhaltlich entschieden und getestet werden. — Entscheidend ist nicht, wessen Fassung gewinnt. Das Ergebnis muss die beabsichtigten Funktionen korrekt verbinden und anschließend geprüft werden.

Du beherrschst den Kern der Versionsverwaltung, wenn du nicht nur Begriffe nennen kannst, sondern einen Beitrag vom Arbeitsverzeichnis über Commit und Branch bis zur geprüften Integration nachvollziehbar planst.

Passend dazu