Categories
Branching & Merging DevOps Git

Alternative zu git stash

Bei der Arbeit in einem Feature Branch kann es passieren, dass aus verschiedenen Gründen ein anderer Branch kurz ausgescheckt und bearbeitet werden muss.

Normalerweise verwendet man git stash dafür.
Ich möchte kurz eine Alternative erläutern.

Die Idee ist, einen zweiten worktree anzulegen und zu nutzen. Der bereits ausgescheckte Feature Branch ist in einem lokalen worktree auf der Festplatte abgelegt. Normalerweise hat man für jedes Projekt nur einen worktree. Daher muss man bei einem Wechsel der Branches die Änderungen committen oder zurückstellen/stashen.

Der git Client bietet allerdings die wenig bekannte Option, einen zweiten worktree basierend auf einem Branch anzulegen. Der folgende Befehl legt in einem neuen Verzeichnis einen worktree des master Branches an:

cd <HomeDirOfProject>
git worktree add ../worktree_master master

Mit einfachen Verzeichniswechseln (cd)

cd ../worktree_master
cd ../<HomeDirOfProject$gt;

kann man jetzt zwischen den Branches wechseln.

Hinweis: Einen zweiten worktree des bereits aktiven, ausgecheckten Branches quittiert git mit einem
fatal: 'master' is already checked out at ...

Mit

cd <HomeDirOfProject>
git worktree remove ../worktree_master

wird man den worktree wieder los.

Die offizielle Dokumentation findet man hier. Bitte für den produktiven Einsatz die Warnung am Ende der Dokumentation beachten:
Multiple checkout in general is still experimental, and the support for submodules is incomplete. It is NOT recommended to make multiple checkouts of a superproject.