Git Stash verstehen: Temporäres Speichern von Änderungen in Git

Mit dem Befehl git stash können Entwickler nicht übertragene Änderungen im Arbeitsverzeichnis vorübergehend sichern. Das ist besonders nützlich, wenn man ohne Commit zu einem anderen Branch oder einer Aufgabe wechseln muss. Git speichert dabei sowohl gestagte als auch ungestagte Änderungen in einem Stapel und entfernt sie aus der Arbeitskopie, sodass sie später wiederhergestellt werden können.

Diese Anleitung zeigt, wie man git stash verwendet, um den Fortschritt zu sichern, Stashes wiederherzustellen oder zu verwerfen, nicht getrackte Dateien einzubeziehen und mehrere gesicherte Zustände effizient zu verwalten.

Vergleich: git stash vs. git commit

Funktion Git Stash Git Commit
Zweck Sichert Änderungen vorübergehend ohne Commit Speichert Änderungen dauerhaft im Repository
Anwendungsfall Beim Unterbrechen einer Aufgabe oder Branch-Wechsel Wenn Änderungen abgeschlossen und bereit für den Verlauf sind
Verlauf betroffen Nein Ja – wird dem Projektverlauf hinzugefügt
Ungetrackte Dateien Optional mit z. B. --include-untracked Ja, sobald mit git add hinzugefügt
Wiederherstellung Kann erneut angewendet oder gelöscht werden Kann rückgängig gemacht oder zurückgesetzt werden, ist aber dauerhaft
Standardbefehl git stash git commit -m "Nachricht"

Schnellstart

Verwende diese Befehle für typische Stash-Vorgänge:

# Alle aktuellen Änderungen sichern
$ git stash

# Mit Beschreibung sichern
$ git stash push -m "Work in progress"

# Alle Stashes anzeigen
$ git stash list

# Letzten Stash anwenden und entfernen
$ git stash pop

# Bestimmten Stash entfernen
$ git stash drop stash@{1}

# Alle Stashes löschen
$ git stash clear

Befehlssyntax im Überblick

git stash [OPTIONEN]

  • save: Speichert gestagte und ungestagte Änderungen im Stapel
  • pop: Wendet den neuesten Stash an und entfernt ihn
  • apply: Wendet den neuesten Stash an, behält ihn aber im Stapel
  • list: Zeigt alle gespeicherten Stashes an
  • show: Zeigt Zusammenfassung oder Diff eines Stashs
  • drop: Entfernt einen bestimmten Stash

Wichtige git stash Befehle

Alle offenen Änderungen sichern

Speichert sämtliche Änderungen und setzt das Verzeichnis auf den letzten Commit zurück.

Stash mit Beschreibung erstellen

$ git stash push -m "message"

Fügt dem Stash eine Beschreibung zur späteren Identifikation hinzu.

Ungetrackte Dateien einschließen

Erfasst sowohl getrackte als auch ungetrackte Dateien.

Alle Stashes anzeigen

Listet alle Stashes mit Referenzen wie stash@{0} auf.

Stash-Übersicht anzeigen

Unterschiede im Stash vollständig anzeigen

Letzten Stash anwenden

Letzten Stash anwenden und entfernen

Branch aus einem Stash erstellen

$ git stash branch <branch-name>

Erklärung häufiger Optionen

  • -u oder –include-untracked: Erfasst ungetrackte Dateien zusätzlich
  • -m: Ermöglicht das Hinzufügen einer Nachricht zum Stash
  • -p: Aktiviert interaktives Stashen einzelner Codeabschnitte

Mehrere Stashes verwalten

Bei paralleler Arbeit an mehreren Aufgaben speichert Git Stashes als Stapel (stash@{n}), wobei n = 0 die aktuellste Version ist. Die folgenden Befehle helfen, gezielt mit einzelnen Einträgen zu arbeiten:

Alle Stashes anzeigen

Bestimmten Stash anwenden

$ git stash apply stash@{n}

Bestimmten Stash entfernen

$ git stash drop stash@{n}

Alle Stashes löschen

Warnung: git stash clear löscht alle gespeicherten Stashes dauerhaft und kann nicht rückgängig gemacht werden. Überprüfe vorher deine Liste!

Beispielhafte Arbeitsweise

So gehst du beim Arbeiten mit Stashes vor:

Dateien ändern

$ echo "<h1>Header</h1>" > index.html
$ echo "console.log('Debug');" > app.js

Stash mit Beschreibung speichern

$ git stash push -m "UI update: Header and debug script"

Ausgabe: Arbeitsverzeichnis mit Beschreibung gespeichert.

Weitere Änderungen vornehmen und erneut stashen

$ echo "<footer>Footer</footer>" >> index.html
$ git stash push -m "Added footer component"

Stash-Liste überprüfen

Ausgabe:

  • stash@{0}: Added footer component
  • stash@{1}: UI update: Header and debug script

Älteren Stash anwenden

$ git stash apply stash@{1}

Die Änderungen aus stash@{1} werden wiederhergestellt, bleiben aber in der Liste erhalten.

Verwendeten Stash löschen

$ git stash drop stash@{1}

Die Ausgabe bestätigt die erfolgreiche Löschung des angegebenen Stash-Eintrags.

Git Stash bereinigen

Wenn du häufig Aufgaben unterbrichst, kann deine Stash-Liste schnell wachsen. Um den Überblick zu behalten, bietet Git Befehle, um einzelne oder alle Einträge zu entfernen. Nachfolgend findest du eine sichere Vorgehensweise zur Bereinigung deiner Stashes.

Befehlsübersicht

Einzelnen Stash löschen:

$ git stash drop stash@{n}

Entfernt den Stash mit Index stash@{n}, ohne andere Einträge zu beeinflussen.

Letzten Stash entfernen:

Ohne Indexangabe wird stash@{0} gelöscht.

Alle Stashes entfernen:

Warnung: git stash clear löscht alle Einträge unwiderruflich. Prüfe vorher deine Liste.

Beispiel für saubere Bereinigung

Nutze diesen Ablauf, um Stashes gezielt anzuwenden, zu committen und zu löschen:

Stashes anzeigen:

Beispielausgabe:

  • stash@{0}: On main: Recent component styling
  • stash@{1}: On main: API endpoint integration
  • stash@{2}: On dashboard-feature: Error handling fix

Älteren Stash anwenden und löschen:

Wendet stash@{2} an und entfernt ihn aus der Liste.

Änderungen committen:

$ git commit -am "Fix error handling in authentication flow"

Weiteren Stash entfernen:

$ git stash drop stash@{1}

Hinweis: Nach dem Löschen eines Eintrags werden alle weiteren neu nummeriert.

Alle Stashes löschen:

Ungetrackte oder ignorierte Dateien stashen

Standardmäßig sichert git stash nur Änderungen an getrackten Dateien. Um auch neue oder ignorierte Dateien zu speichern, verwende spezielle Flags.

Ungetrackte Dateien einbeziehen

Sichert alle Änderungen, inklusive nicht hinzugefügter Dateien.

Alles stashen (inkl. ignorierte Dateien)

Warnung: Damit werden auch Build-Artefakte und Abhängigkeiten gesichert. Nur mit Vorsicht verwenden.

Stash mit ungetrackten Dateien inspizieren

$ git stash show -p -u stash@{0}

Beispiel: Ungetrackte Dateien stashen und wiederherstellen

Status im Arbeitsverzeichnis prüfen

Beispielausgabe:

  • user-profile.html wurde verändert
  • login-validation.js ist ungetrackt

Alle Dateien stashen (inkl. ungetrackter)

$ git stash push -u -m "WIP: Auth validation script"

Arbeitsverzeichnis ist sauber

Erwartete Ausgabe: nichts zu committen, Arbeitsbaum ist sauber.

Gespeicherte Änderungen zurückholen

Beispielausgabe:

  • Datei geändert: user-profile.html
  • Ungetrackte Datei: login-validation.js
  • Entfernter Eintrag: refs/stash@{0}

Fazit

Diese Anleitung zeigt dir, wie du mit git stash effektiv Zwischenschritte sicherst, mehrere Stashes verwaltest und auch ungetrackte bzw. ignorierte Dateien nicht verlierst. Ob für einen sauberen Arbeitsstand oder zum Kontextwechsel – Stashing hält deinen Code sauber und flexibel.

Quelle: vultr.com

Jetzt 200€ Guthaben sichern

Registrieren Sie sich jetzt in unserer ccloud³ und erhalten Sie 200€ Startguthaben für Ihr Projekt.

Das könnte Sie auch interessieren: