Featured image of post Warum bei jedem Branch-Wechsel git stash nutzen? Was ist Git Worktree? Unterschiede zwischen Git Worktree und Git Branch? So erstellen Sie einen hoch effizienten Multi-Thread-Entwicklungs-Workflow mit Git Worktree

Warum bei jedem Branch-Wechsel git stash nutzen? Was ist Git Worktree? Unterschiede zwischen Git Worktree und Git Branch? So erstellen Sie einen hoch effizienten Multi-Thread-Entwicklungs-Workflow mit Git Worktree

Sie entwickeln ein neues Feature und ein dringender Bug tritt auf? Verstecken Sie Ihren Code nicht mehr mit git stash! Kernkonzepte von Git Worktree, Unterschiede zu Git Branch, praktische Verzeichnisplanung und Best Practices mit AI Agent.

Kennen Sie diese Situation? Sie entwickeln gerade ein komplexes neues Feature, der Code ist halb fertig, und plötzlich kommt ein dringender Bug herein, der sofort behoben werden muss.

Um den Branch zu wechseln, müssen Sie widerwillig git stash ausführen, um Ihren unfertigen Code zu verstecken. Nach der Bugbehebung kehren Sie zurück und führen vorsichtig git stash pop aus, wobei Sie manchmal mit dem Albtraum von Code-Konflikten konfrontiert werden.

Tatsächlich bietet Git schon lange ein äußerst mächtiges Werkzeug zur Lösung dieses Problems: Git Worktree.

Verabschieden Sie sich von chaotischen Branch-Wechseln und Stashes und starten Sie Multi-Thread-Entwicklung mit Worktree

Dieser Artikel führt Sie durch die Kernfunktionsweise und den praktischen Einsatz im Entwickleralltag.

Was ist der Unterschied zwischen Git Worktree und Git Branch?

Um Git Worktree zu verstehen, klären wir zunächst den Unterschied zu einem Git Branch.

Wir können uns die Versionskontrolle wie das Lesen eines Buches vorstellen:

  • Commit ist die Auflage / Version des Buches
  • Branch ist das Lesezeichen auf einer bestimmten Seite
  • Worktree ist der Schreibtisch, auf dem Sie das Buch aufschlagen

Beim traditionellen Ansatz haben wir nur einen einzigen Schreibtisch. Jedes Mal, wenn wir das Lesezeichen wechseln möchten, müssen wir alle bearbeiteten Papiere aufräumen oder in eine Schublade legen (das entspricht git stash).

Git Worktree hingegen ermöglicht es Ihnen, mehrere unabhängige Schreibtische gleichzeitig zu besitzen.

Vergleichspunkt Git Branch Git Worktree
Workspace-Konzept Teilt ein altes physisches Arbeitsverzeichnis Besitzt mehrere unabhängige physische Arbeitsverzeichnisse
Wechselkosten Erfordert Commit, Stash oder Zwischenspeichern Kein Stash erforderlich; einfach das Verzeichnis wechseln
Isolierung & Sicherheit Uncommitted Dateien können Konflikte oder Reste verursachen Vollständig isoliert; Änderungen beeinflussen sich nicht
Historie Teilt Git Commit-Historie und Branches Teilt Git Commit-Historie und Branches

Aktueller Branch, Staging-Bereich und uncommitted Änderungen jedes Worktrees sind völlig unabhängig, aber sie teilen die gesamte Commit-Historie und Branch-Einträge.

Branch ist das Versions-Lesezeichen, während Worktree der physische Schreibtisch ist

Wenn Sie also die Aufgabe wechseln müssen, öffnen Sie einfach einen anderen Ordner, ohne Ihren aktuellen Entwicklungsstand verändern zu müssen.

Wie startet man mit Git Worktree?

Bei der Einführung von Git Worktree in realen Projekten sorgt eine durchdachte Verzeichnisplanung für reibungslosere Abläufe.

Es wird empfohlen, das ursprungs geklonte git clone Projektverzeichnis als sauberes main-Hauptquartier zu behalten und neu erstellte Worktree-Verzeichnisse außerhalb des Hauptprojekts zu platzieren (z. B. ../my-app-worktrees), um rekursive Scan-Fehler von Entwickler-Tools zu vermeiden.

Der typische Befehlsablauf sieht wie folgt aus:

Ablauf Befehl
1. Neuen Worktree erstellen und gleichzeitig neuen Branch anlegen git worktree add ../my-app-worktrees/feature-login -b feature-login
2. Liste aller aktiven Worktrees anzeigen git worktree list

Git Worktree eignet sich hervorragend zur Verwaltung von Entwicklungsaufgaben für einen AI Agent.

Sie können dem AI Agent ein eigenes Worktree-Verzeichnis zuweisen, in dem er nach Belieben Code ändern und testen kann, während menschliche Entwickler in einem anderen Worktree Code-Reviews und Tests durchführen.

Geben Sie dem AI Agent einen eigenen Worktree, damit KI-Entwicklung und menschliches Review parallel ablaufen können

Beide arbeiten in ihren jeweiligen physischen Verzeichnissen – sicher und übersichtlich.

Wie mergt und bereinigt man nach Abschluss der Entwicklung sicher?

Wie führt man die Ergebnisse nach Abschluss der Arbeiten in einem unabhängigen Worktree zusammen und bereinigt alles?

Wichtiges Konzept: Das Worktree-Verzeichnis selbst muss nicht gemergt werden, was tatsächlich gemergt werden muss, ist der Branch.

Sie müssen lediglich zum Schreibtisch-Verzeichnis von main zurückkehren und git merge für den entsprechenden Feature-Branch ausführen.

Befolgen Sie für die Bereinigung den standardmäßigen Zwei-Schritt-Prozess:

Schritt Befehl
1. Physisches Worktree-Verzeichnis entfernen git worktree remove ../my-app-worktrees/feature-login
2. Abgeschlossenen Feature-Branch löschen git branch -d feature-login

Zuerst das Worktree-Verzeichnis entfernen, dann den Branch löschen

Nutzen Sie für das Aufräumen stets den Befehl git worktree remove und löschen Sie den Ordner keinesfalls manuell über den Datei-Explorer.

Welche häufigen Fallstricke gibt es bei Git Worktree?

Obwohl Git Worktree sehr praktisch ist, gibt es einige Stolperfallen, die Sie beachten sollten.

Fallstrick 1: Nicht committete Änderungen gehen verloren

Obwohl das Entfernen eines Worktrees den Branch selbst nicht löscht, werden noch uncommitted Änderungen im Verzeichnis durch ein erzwungenes Löschen des Worktrees unwiederbringlich gelöscht.

Fallstrick 2: Branch-Belegungskonflikte

Der Schutzmechanismus von Git erlaubt es nicht, denselben Branch gleichzeitig in zwei verschiedenen Worktrees auszuchecken. Wenn Sie versuchen, in einem zweiten Worktree zu einem bereits belegten Branch zu wechseln, blockiert Git dies und gibt eine Fehlermeldung aus.

Erzwungenes Löschen eines Worktrees führt zum Verlust noch nicht committeter Änderungen

Wenn Sie diese Eigenschaften und Prinzipien beherrschen, vermeiden Sie diese Fehler.

Fazit

Mit Git Worktree können wir uns komplett von chaotischen Branch-Wechseln und git stash-Abläufen verabschieden und echte Multi-Thread-Entwicklung erreichen.

Wenn Sie das nächste Mal einen dringenden Bug beheben, mehrere Features gleichzeitig entwickeln oder Aufgaben an einen AI Agent übergeben müssen, probieren Sie es aus und schlagen Sie einen neuen Schreibtisch auf!

Reference

All rights reserved,未經允許不得隨意轉載
Erstellt mit Hugo
Theme Stack gestaltet von Jimmy