Ein Stash ist ein Ablageplatz für angefangene Arbeit, die kurz aus dem Weg soll. Git nimmt die Änderungen aus dem Arbeitsverzeichnis, legt sie beiseite und stellt den letzten Commit-Stand her. Später holst du sie zurück. Englisch to stash heißt verstauen.
- Stash
Ein Ablageplatz für angefangene Arbeit, die kurz aus dem Weg soll.
Beispiel: „Der Stash hielt die halbfertige Änderung, bis der dringende Fehler behoben war.“Angelegt mit
git stash, zurückgeholt mitgit stash pop. Mehrere Stashes liegen als Stapel übereinander.Abgrenzung zum Commit: Ein Stash gehört zu keinem Branch, wird nicht gepusht und existiert nur auf deinem Rechner.
Wozu ein Stash gut ist
Für die kurze Unterbrechung. Ein Branchwechsel mit ungesicherten Änderungen geht nicht immer, und ein Commit für einen halbfertigen Stand will man auch nicht. Der Stash ist der Ausweg dazwischen.
Dauert die Unterbrechung länger, ist ein Worktree die bessere Wahl. Dann bleibt die angefangene Arbeit dort liegen, wo sie ist.
Warum ein Stash kein Lager sein sollte
Weil er unsichtbar ist. Er taucht in keinem Status auf, gehört zu keinem Branch und hat keine Beschreibung außer dem, was du ihm mitgibst. Nach zwei Wochen weiß niemand mehr, was in Stash Nummer drei lag und wofür.
Hinzu kommt, dass er beim Zurückholen auf den dann aktuellen Stand trifft. Hat sich dort etwas geändert, gibt es einen Konflikt, und der ist umso größer, je länger der Stash lag.
Was beim Stash oft übersehen wird
Dass unversionierte Dateien in der Voreinstellung liegen bleiben. Wer eine neue Datei angelegt hat und stasht, findet sie danach weiterhin im Arbeitsverzeichnis; nur die Änderungen an bekannten Dateien sind weg.
Ebenso bleibt die Staging Area nicht erhalten: Was vorgemerkt war, ist nach dem Zurückholen wieder gewöhnlich geändert. Für den Alltag ist das selten wichtig und einmal im Jahr verwirrend.