Featured image of post Was ist der Unterschied zwischen der Entwicklung mit Git Worktree und Git Branch? Wann sollten Sie Git Worktree verwenden?

Was ist der Unterschied zwischen der Entwicklung mit Git Worktree und Git Branch? Wann sollten Sie Git Worktree verwenden?

Sie sind mitten in der Entwicklung einer neuen Funktion und bekommen plötzlich einen dringenden Bug zur Lösung zugeteilt? Genervt von chaotischen Umgebungen und Build-Überbleibseln? Dieser Artikel zeigt Ihnen, wie Git Worktree wie das Eröffnen einer 'Zweigstelle' wirkt und so wahre parallele Entwicklung sowie die Isolation von Umgebungen ermöglicht, damit Ihr Arbeitsfluss ununterbrochen bleibt!

Sie sind mitten in der Entwicklung einer neuen Funktion, als Ihr Chef plötzlich hereinkommt und Sie bittet, einen dringenden Fehler zu beheben. Was tun Sie?

Die meisten Leute würden wahrscheinlich git stash benutzen, um den halbfertigen Code in eine Schublade zu schieben, und dann den Branch wechseln, um den Fehler zu beheben.

Aber was ist, wenn Ihre Änderungen massive Umgebungskonfigurationen beinhalten oder wenn der Wechsel des Branches dazu führt, dass sich node_modules und Build-Artefakte (Build Artifacts) gegenseitig kontaminieren? Das allein reicht aus, um die Tastatur zerschlagen zu wollen.

Genau hier kommt Git Worktree zur Rettung!

Was ist Git Worktree?

Man kann sich die Arbeitsweise von Git wie die “Renovierung eines Hauses” vorstellen.

Mit dem traditionellen git branch verschwinden beim Branch-Wechsel alle Möbel im Raum augenblicklich vor Ihren Augen und ordnen sich automatisch um, um für eine andere Aufgabe zu passen.

Dies spart zwar Platz, hat aber den Nachteil der “Umgebungskontamination”. Sie müssen Ihr schmutziges Geschirr erst im Schrank verstauen, bevor Sie den Branch wechseln können; und nach dem Wechsel könnte der Fettgeruch der vorherigen Bauarbeiten noch in der Luft hängen.

Auf der anderen Seite ist Git Worktree so, als würde man ein identisches Haus auf dem freien Grundstück nebenan bauen.

Einfach gesagt lautet das Grundprinzip von Git:

“Eine Seele (.git-Datenbank), mehrere physische Körper (Arbeitsverzeichnisse).”

Man kann gleichzeitig eine “Zweigstelle für die Feature-Entwicklung” und eine “Notfall-Reparatur-Zweigstelle” besitzen. Die linke Hand schreibt KI-Logik in Fenster A, während die rechte Hand in Fenster B Bugs behebt, ohne dass sie sich gegenseitig stören. Das ist wahre parallele Entwicklung.

Praxisleitfaden für Worktree

Um während der Entwicklung im Flow zu bleiben, sind Verzeichnisstruktur und Umgebungskonfiguration entscheidend.

1. Paralleles Verzeichnismanagement: Bauen Sie keine Zweigstellen im Hauptquartier

Viele Leute, die Worktree zum ersten Mal benutzen, erstellen ungeschickterweise das neue Verzeichnis innerhalb des ursprünglichen Projektordners. Tun Sie das niemals! Es wird Git in ein unendliches rekursives Chaos stürzen. Der richtige Weg, einen Git Worktree zu erstellen, ist:

Platzieren Sie das Hauptquartier (main) und die Aufgaben-Zweigstelle (feature) parallel zueinander.

# Führen Sie die Erstellung des Worktrees vom Hauptquartier aus durch, aber platzieren Sie das Worktree-Verzeichnis außerhalb des ursprünglichen Projektverzeichnisses
git worktree add ../my-app-feat-ai dev-branch

Ihre Verzeichnisstruktur sollte in etwa so aussehen:

- my-project/       # Massiver Container
  - main-repo/      # Stabiles Hauptquartier
  - feat-ai-search/ # Neue Zweigstelle im Bau

2. Isolation der Umgebungskonfiguration: Geben Sie jeder Zweigstelle ihre eigene Seele

Da die Projektverzeichnisse getrennt sind, können auch Ihre .env-Konfigurationsdateien getrennt sein.

Sie können sich in feat-ai-search mit einer Test-Datenbank verbinden, während in main die ursprüngliche Entwicklungsdatenbank beibehalten wird. Auf diese Weise müssen Sie beim Fensterwechsel nicht einmal die Verbindungsdetails ändern.

Nach dem Betreten des Worktree-Verzeichnisses verwenden Sie für die Entwicklung direkt die Umgebungsvariablen jenes spezifischen Worktree-Verzeichnisses, ohne dass Sie die Umgebung wechseln oder neu aufbauen müssen. Das Gefühl von “Hineintreten und sofort an die Arbeit gehen” ist wirklich fantastisch.

Merge-Workflow im Worktree

Nach Abschluss der Entwicklung innerhalb eines Worktrees ist der Workflow eigentlich identisch mit dem eines traditionellen Branches, mit nur einer zusätzlichen “Abriss”-Aktion.

Schritte des Workflows Beschreibung
1. Commit & Push in der Zweigstelle Sie müssen physisch in die Zweigstelle gehen, um zu unterzeichnen.
2. Inspektion am Hauptsitz (Merge) Sie können zum Mergen zu main zurückkehren oder direkt einen Pull Request (PR) öffnen.
3. Eleganter Abriss (Remove) Wenn die Aufgabe erledigt ist, löschen Sie den Ordner nicht einfach; nutzen Sie einen Git-Befehl zum Abreißen: git worktree remove ../feat-ai-search

Bum! Die temporäre Worktree-Hütte ist abgerissen, Speicherplatz wird zurückgewonnen, und Ihr Hauptquartier ist weiterhin blitzsauber.

Handbuch zur Vermeidung von Worktree-Fallen

Obwohl Worktrees sehr nützlich sind, gibt es dennoch einige Fallstricke, auf die man achten sollte:

Element Beschreibung
Verlegen Sie das Hauptquartier nicht leichtfertig Worktree erfasst nämlich absolute Pfade. Wenn Sie das Verzeichnis des Hauptquartiers umbenennen, wird die Worktree-Zweigstelle zugrunde gehen, da sie ihre “Seele” nicht finden kann.
Keine Doppel-Branches Derselbe Branch darf nicht in zwei Worktrees gleichzeitig ausgecheckt (checked out) werden.
Staubsauger-Roboter prune Wenn Sie den Ordner fälschlicherweise mit rm -rf entfernen, vergessen Sie nicht, git worktree prune auszuführen, um etwaige verbliebene Datensätze in .git zu löschen.

Fazit: Sollte ich aufhören, Git Branch zu verwenden?

Unterschiedliche Szenarien verlangen nach unterschiedlichen Entwicklungsmethoden. Es geht nicht darum, dass eines das andere ersetzt, sondern darum, was am besten geeignet ist.

Szenario Beschreibung
Alltägliche kleinere Anpassungen Nutzen Sie weiterhin branch; es ist leichtgewichtig und schnell.
Groß angelegte Aufgaben Für z.B. massive Refactorings, Anpassungen über mehrere Umgebungsvariablen hinweg oder Aufgaben, die eine langfristige Zusammenarbeit mit KI erfordern, ist das Öffnen eines Worktrees definitiv die beste Wahl.

Git Worktree ist mehr als nur ein Befehl; es ist ein mächtiges Tool, das uns hilft, unseren Entwicklungs-Flow aufrechtzuerhalten. Wenn Sie das nächste Mal mit einer mühsamen, weitläufigen Aufgabe konfrontiert werden, versuchen Sie, eine isolierte “Git Worktree Zweigstelle” zu eröffnen und erleben Sie einen reibungslosen Entwicklungsprozess wie nie zuvor!

Reference

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