Von Gast (nicht überprüft) , 29 April 2026

Übersicht

git stash [push [-m <msg>] [-u]]
git stash pop [<stash>]
git stash list
git stash drop [<stash>]

Beschreibung

Der git stash-Befehl legt uncommitted Änderungen (sowohl im Working Tree als auch im Index) beiseite und setzt den Working Tree in einen sauberen Zustand zurück. Die beiseite gelegten Änderungen werden auf einem Stack gespeichert, den Sie später wiederanwenden können. Stash ist perfekt für Situationen wie "Ich muss Branches wechseln, aber meine Arbeit ist nicht bereit für einen Commit."

Standardmäßig werden untracked Dateien nicht gestasht; übergeben Sie -u (oder --include-untracked), um sie einzubeziehen, und -a, um sogar ignorierte einzubeziehen. Jeder Stash-Eintrag ist ein gewöhnliches Commit-Objekt, adressierbar als stash@{0}, stash@{1} usw.

Im täglichen Einsatz integriert sich git stash eng mit Shell-Aliasen, Editor-Plugins und Continuous Integration. Power-User fügen oft Aliase hinzu, die Flags kombinieren, die sie immer übergeben, oder wickeln den Befehl in Skripte, die Teamkonventionen durchsetzen. Die Ausgabeformatierung kann über Git-Config angepasst werden — Pretty-Formate, Farbschemata und Pager-Verhalten sind alle einstellbar. Wenn etwas schiefgeht, ist der erste Diagnoseschritt üblicherweise, den Befehl erneut mit GIT_TRACE=1 in der Umgebung auszuführen, was die zugrunde liegenden Plumbing-Aufrufe offenlegt. Für ungewöhnliche Situationen öffnet die --help-Ausgabe (git stash --help) die vollständige Manpage mit Details zu jeder Option, einschließlich solcher, die in alltäglichen Workflows selten verwendet werden, aber für Debugging oder Skripting im großen Maßstab essentiell sind.

Zu verstehen, wie git stash mit dem Rest von Gits Datenmodell interagiert — der Objektdatenbank, dem Index, Refs und dem Working Tree — zahlt sich aus. Jeder Befehl operiert auf einer Teilmenge dieser Stücke, und zu wissen, welche er berührt, hilft Ergebnisse vorherzusagen und sich von Fehlern zu erholen. Das Lesen der offiziellen Git-Dokumentation neben praktischer Übung in einem Wegwerf-Repository ist der schnellste Weg, die Nuancen zu verinnerlichen. Die meisten Produktionsprobleme mit Git rühren von einer von drei Ursachen: überraschendem Standardverhalten, partiellen Netzwerkoperationen oder dem Umschreiben bereits geteilter Historie. Ein funktionierendes mentales Modell der Nebenwirkungen von git stash hilft, alle drei zu vermeiden.

Häufige Optionen

Option / UnterbefehlBeschreibung
push -m <msg>Stash mit beschreibender Nachricht.
-uBezieht untracked Dateien ein.
-aBezieht auch ignorierte Dateien ein.
listZeigt alle Stash-Einträge.
show [-p] <stash>Zeigt den Inhalt eines Stashs.
pop / applyWendet einen Stash erneut an; pop löscht ihn auch.
drop <stash>Löscht einen Stash-Eintrag.
branch <name>Erstellt einen Branch aus einem Stash.

Beispiele

git stash push -m "WIP: refactor parser"
    # Aktuelle Arbeit mit Label speichern

    git stash list
    # stash@{0}: On main: WIP: refactor parser

    git stash pop
    # Den jüngsten Stash erneut anwenden und entfernen

    git stash branch temp-branch stash@{1}
    # Einen neuen Branch aus einem konfliktbehafteten Stash erstellen

Häufige Fehler

Vergessen, dass Stash standardmäßig keine untracked Dateien einbezieht, und sie dann beim Ausführen von git clean verlieren. Verwenden Sie -u. Einen Stash zu poppen, der in Konflikt gerät, kann einen komplizierten Zustand hinterlassen — ziehen Sie zuerst apply in Betracht, sodass der Stash nicht verworfen wird, falls etwas schiefgeht. Lange existierende Stashes häufen sich an; überprüfen Sie regelmäßig mit git stash list.

Verwandte Befehle

git commit, git switch, git restore, git clean