Tiefe
Gleiches Kapitel, drei Tiefen. Die Wahl gilt überall und bleibt gespeichert.

GrundlagenVibe-Coding / Agentic EngineeringKapitel 04von 13 im Pfad

Versionierung

Tiefe 1: Überblick · Lesezeit 9 Min. · Stand

Ein Agent arbeitet schnell und in der Breite. Ein Auftrag von zwei Sätzen kann zwanzig Dateien anfassen, davon fünfzehn richtig. Dass er Fehler macht, ist gesetzt. Was sich beeinflussen lässt, ist der Preis eines einzelnen.

Genau diese Frage beantwortet die Versionsverwaltung, und deshalb steht sie in diesem Kurs so weit vorn.

Git in einem Absatz

Git hält Stände fest. Ein Commit ist ein Standbild der Dateien, die in Git liegen, mit Zeitpunkt, Urheber und einem Satz dazu, warum er entstanden ist. Aus einer Reihe solcher Standbilder ergibt sich zweierlei: Sie können zu jedem dieser Stände zurück, und Sie können sehen, was sich zwischen zweien davon geändert hat.

Die Einschränkung steckt im ersten Satz. Was Git nicht verwaltet, steht in keinem Commit: die Zugangsdaten in der lokalen Umgebungsdatei, die installierten Abhängigkeiten, die Datenbank daneben. Der Rückweg führt zu einem Dateistand, er stellt kein Projekt wieder her.

Für die Arbeit mit einem Agenten sind beide Richtungen zentral. Der Rückweg macht einen Fehlversuch billig. Der Vergleich beantwortet die Frage, was da eigentlich gerade passiert ist, und zwar am Ergebnis statt am Bericht des Agenten.

Der Agent bucht selbst ein

Bei Aider, dem ältesten Werkzeug dieser Bauform, ist das die Voreinstellung:

Whenever aider edits a file, it commits those changes with a descriptive commit message. (externe Seite, aider.chat)

Bemerkenswert ist der Schritt davor. Findet Aider beim Start bereits geänderte Dateien vor, kommen die zuerst in einen eigenen Commit:

Aider will first commit any preexisting changes with a descriptive commit message. (externe Seite, aider.chat)

Der Grund dafür ist eine Trennlinie, die Sie sich merken sollten: Ihre Arbeit und die des Agenten sollen in verschiedenen Commits liegen. Sonst lässt sich hinterher nicht mehr auseinanderhalten, wer was getan hat, und der Rückweg nimmt Fremdes mit.

Eine zweite Voreinstellung derselben Seite zeigt in die andere Richtung, und sie ist leicht zu überlesen:

By default, aider skips pre-commit hooks (externe Seite, aider.chat)

Wie das geschieht, steht im selben Satz: Aider hängt an seinen Commit den Schalter --no-verify. Prüfungen, die vor jedem Commit laufen sollen, laufen hier also nicht. Wer sich darauf verlässt, dass ein Formatierer oder eine Suche nach Zugangsdaten den Commit aufhält, muss das eigens einschalten. Was solche Prüfungen leisten und warum sie den Rang einer Schranke haben, steht in Kapitel 08.

Andere Werkzeuge halten sich zurück und committen erst, wenn man sie darum bittet. Beide Wege sind vertretbar. Stundenlang ohne Commit zu arbeiten, ist es nicht.

Der eingebaute Rückweg

Die meisten Agenten haben inzwischen eine eigene Rücknahme, unabhängig von Git. Bei Claude Code heißt sie Checkpoint und entsteht ohne Zutun:

Every prompt you send that starts a turn creates a new checkpoint (externe Seite, code.claude.com)

Das ist bequem und im Alltag oft genau richtig: Ein Auftrag ging daneben, zwei Tastendrücke später ist der Stand von vorhin wieder da, samt Gesprächsverlauf.

Wichtiger ist allerdings, was diese Rücknahme nicht erfasst. Die Dokumentation nennt vier Lücken, und jede einzelne ist ein realer Alltagsfall:

Checkpointing does not track files modified by bash commands. (externe Seite, code.claude.com)

Alles, was über die Kommandozeile passiert, fällt heraus. Ein verschobenes Verzeichnis, ein Skript, das Dateien erzeugt, ein Paketmanager: nicht erfasst.

Checkpointing only tracks files that have been edited within the current session. (externe Seite, code.claude.com)

Was Sie selbst im Editor geändert haben, ist nicht dabei. Was eine zweite Sitzung nebenan getan hat, auch nicht.

Drittens die Subagenten. Was einer von ihnen ändert, kommt in aller Regel nicht zurück, und die Dokumentation sagt für diesen Fall in vier Worten, was stattdessen hilft: Use git to revert them. (externe Seite, code.claude.com) Eine Ausnahme steht daneben, sie betrifft eine Bauart, die im Vordergrund und innerhalb Ihres eigenen Zuges arbeitet.

Und viertens die verknüpften Pfade:

Claude Code skips any tracked path that is a symlink or hard link (externe Seite, code.claude.com)

Das trifft zwei Dinge, die man sich selten aussucht: eine Konfigurationsdatei, die ein Verwaltungswerkzeug ins Projekt hineinverlinkt, und Abhängigkeiten, die ein Paketmanager als Hardlink ablegt. Die Rücknahme überspringt sie und sagt hinterher, wie viele es waren.

Die Checkpoint-Linie hat Lücken genau dort, wo etwas außerhalb der Sitzung geschah. Zwei Zeitachsen übereinander. Sie zeigen, warum eine Rücknahme mitten in einer Sitzung ins Leere greifen kann. EINE SITZUNG VON LINKS NACH RECHTS Checkpoints LUECKE Umbenennen über die Shell Commits JEDER EINGEBUCHTE STAND BLEIBT ERREICHBAR hier trotzdem drin

seitlich verschiebbar

Der Checkpoint fängt die Änderungen der eigenen Sitzung. Was von der Kommandozeile, von nebenan, von einem Subagenten oder über einen verknüpften Pfad kommt, fällt durch. Darunter liegt Git.

eigene Darstellung, Stand 07.08.2026

Der Hersteller sagt das selbst und in derselben Reihenfolge:

For permanent version history and collaboration, continue using version control, such as Git, for commits, branches, and long-term history. (externe Seite, code.claude.com)

Klein und oft

Aus dem Tempo folgt der Takt. Wer nach drei Stunden Arbeit einen einzigen Commit macht, hat einen Stand, in dem sieben Dinge gleichzeitig stecken. Ist eines davon falsch, gibt es keinen Rückweg, der nur dieses eine betrifft.

Die brauchbare Gewohnheit: nach jedem abgeschlossenen Gedanken committen. Ein Commit sollte eine Sache enthalten und in einem Satz beschreibbar sein. Braucht der Satz ein „und“, um zwei verschiedene Absichten zu verbinden, waren es zwei Commits. Eine Änderung und der Test dazu sind eine Absicht.

Wer testgetrieben arbeitet, dreht die Reihenfolge um und bucht den Test zuerst ein. Der Commit davor wird damit zum Nachweis, dass die Erwartung vor dem Code dastand, siehe Erst der rote Test.

Das kostet wenig und zahlt sich beim ersten Fehlversuch aus.

Die Nachricht ist auch für die Maschine

Ein Detail, das man leicht übersieht: Der Branch, die nicht committeten Änderungen und die jüngsten Commits gehören zu dem, worauf ein Werkzeug wie Claude Code von sich aus zugreift. Der Hersteller führt es unter den Dingen auf, an die es in einem Projektverzeichnis herankommt:

Your git state. Current branch, uncommitted changes, and recent commit history. (externe Seite, code.claude.com)

Eine Commit-Nachricht ist damit doppelt adressiert. Sie erklärt einem Menschen in sechs Monaten, warum eine Änderung entstand, und sie erklärt es einem Agenten in der nächsten Sitzung. Was das für das Gedächtnis eines Projekts bedeutet, steht in Kapitel 05.

Quellen

7 Einträgealle erreichbar

Erreichbarkeit automatisch geprüft

  • Dokumentationerreichbar

    Aider, Git integration (externe Seite, aider.chat)

    aider.chatgeprüft 24.09.2026

    Die Dokumentation zum Git-Verhalten von Aider, dem ältesten Agenten dieser Bauform. Sie belegt, dass der Commit dort zur Voreinstellung gehört: Jede Änderung wird sofort mit einer beschreibenden Nachricht committet, und vorgefundene fremde Änderungen kommen vorher in einen eigenen Commit, damit beides getrennt bleibt. Das Abschalten ist möglich und wird ausdrücklich nicht empfohlen. Auf derselben Seite steht eine zweite Voreinstellung, die in die andere Richtung zeigt: Die Prüfungen vor dem Commit werden übersprungen, solange man sie nicht eigens einschaltet. Der Wortlaut nennt dafür den Schalter, dessen doppelter Bindestrich im Zitat nicht wiedergegeben werden kann, weil der Markdown-Prozessor daraus einen Geviertstrich macht.

  • Dokumentationerreichbar

    Anthropic, Checkpointing (externe Seite, code.claude.com)

    code.claude.comgeprüft 24.09.2026

    Die Herstellerdokumentation zum tooleigenen Rückweg: Vor jeder Eingabe wird der Stand der Dateien festgehalten, über ein Menü lässt sich zu jedem dieser Punkte zurück. Sie ist zugleich die Quelle für die Grenzen davon, und die sind der eigentliche Grund, warum daneben eine Versionsverwaltung stehen muss. Vier Lücken stehen dort, beim Abruf am 03.08.2026 waren drei davon erfasst: Was ein Shell-Befehl ändert, wird nicht erfasst, ebenso wenig Änderungen von außen oder aus einer zweiten Sitzung, und wiederhergestellt wird auch kein Pfad, der ein Symlink oder Hardlink ist. Bei Subagenten kommt es auf die Bauart an. Der Abschnitt "Not a replacement for version control" sagt es selbst.

  • Dokumentationerreichbar

    Anthropic, How Claude Code works (externe Seite, code.claude.com)

    code.claude.comgeprüft 24.09.2026

    Die Übersichtsseite des Herstellers zu der Frage, worauf das Werkzeug in einem Projektverzeichnis überhaupt zugreift. Sie zählt sechs Dinge auf, darunter den Git-Zustand mit Branch, nicht committeten Änderungen und den jüngsten Commits. Der Zugriff ist damit belegt, das Laden in den Kontext nicht: Die Seite zum Kontextfenster führt auf, was vor der ersten Eingabe darin liegt, und der Git-Zustand steht dort nicht dabei.

  • Dokumentationerreichbar

    Anthropic, Run parallel sessions with worktrees (externe Seite, code.claude.com)

    code.claude.comgeprüft 24.09.2026

    Die Herstellerdokumentation zu getrennten Worktrees: ein zweites Arbeitsverzeichnis mit eigenen Dateien und eigenem Branch auf derselben Historie. Sie belegt die Antwort auf die Frage, wie zwei Agenten gleichzeitig an einem Projekt arbeiten können, ohne sich in die Quere zu kommen, und nennt die Kanten: Ein frischer Auscheckvorgang hat die nicht committeten Dateien nicht dabei, und aufgeräumt wird nur, was keine Arbeit mehr enthält. Für die Mitnahmeliste steht das Beispiel des Herstellers selbst da, und es besteht aus zwei Umgebungsdateien und einer Datei mit Zugangsdaten.

  • Dokumentationerreichbar

    Anthropic, Orchestrate teams of Claude Code sessions (externe Seite, code.claude.com)

    code.claude.comgeprüft 24.09.2026

    Die Herstellerdokumentation zu mehreren Agenten, die als Team zusammenarbeiten. Anders als bei getrennten Worktrees bekommt hier jeder Beteiligte kein eigenes Verzeichnis, weshalb die Seite die Bedingung ausspricht, unter der geteiltes Arbeiten aufgeht: Die Arbeit wird so aufgeteilt, dass jeder andere Dateien besitzt. Sie nennt daneben eine Größenordnung, drei bis fünf Beteiligte, und den Grund dafür, dass die Kosten mit jedem weiteren linear steigen und der Abstimmungsaufwand mit.

  • Dokumentationerreichbar

    Git, git-history (externe Seite, git-scm.com)

    git-scm.comgeprüft 24.09.2026

    Die Handbuchseite zu einem Git-Befehl, dessen Zweck das Umschreiben bereits committeter Stände ist: Änderungen nachträglich in einen älteren Commit hineinlegen, dessen Nachricht ersetzen, ihn in zwei zerlegen. Der Befehl führt in seiner Überschrift das Wort EXPERIMENTAL und ist neu, die Seite nennt als jüngste Fassungen 2.54.0 vom 20.04.2026 und 2.55.0 vom 29.06.2026. Er belegt keine neue Fähigkeit, denn umschreiben ließ sich eine Historie immer schon; er belegt, dass der Vorgang gewöhnlich genug ist für einen eigenen Befehl.

  • Dokumentationerreichbar

    Anthropic, Explore the context window (externe Seite, code.claude.com)

    code.claude.comgeprüft 24.09.2026

    Die Herstellerseite zum Kontextfenster, aufgebaut als begehbare Simulation einer Sitzung. Sie ist die Quelle für den Satz, dass das Verdichten das Gespräch durch eine strukturierte Zusammenfassung ERSETZT, statt es zu verwerfen: Zum Ereignis "/compact" steht dort wörtlich "Replaces the conversation with a structured summary." Ebenfalls von dort die Ausnahme, dass die Liste der verfügbaren Skills als einziger Teil des Startinhalts nach dem Verdichten nicht erneut eingesetzt wird; erhalten bleiben nur die tatsächlich aufgerufenen. Sie belegt außerdem, dass die Startfüllung ohne Zutun geschieht: "Before you type anything: CLAUDE.md, auto memory, MCP tool names, and skill descriptions all load into context." Die Umgebungsangaben stehen in der begehbaren Simulation als eigener Posten "Environment info" mit 280 Token und der Kennzeichnung auto, beschrieben als "Working directory, platform, shell, OS version, and whether this is a git repo. Git branch, status, and recent commits load as a separate block at the very end of the system prompt." Dieser Text liegt in den Daten der Simulation und wird erst beim Anklicken des Punktes sichtbar, deshalb ist er nicht als Zitat hinterlegt.

Tippen Sie los.

↑↓ auswählenEnter öffnenDie Suche läuft im Browser. Nichts wird übertragen.