Zum Inhalt springen
GitTree

Git-Anleitungen

Git-Stash: Änderungen speichern, Zweige wechseln und Ihre Arbeit wiederherstellen

Eine dringende Fehlerbehebung unterbricht unvollendete Arbeiten. Speichern Sie es im Git-Stash, stellen Sie den richtigen Eintrag später wieder her und verstehen Sie Apply, Pop und Konflikte, bevor Sie klicken. Enthält eine visuelle GitTree Komplettlösung.

Geschrieben von KodmoraAktualisiert 6 Min. gelesen

Git Stash speichert nicht festgeschriebene Änderungen, sodass Sie an etwas anderem arbeiten und diese Änderungen dann zurückbringen können. Beginnen Sie mit git stash push -m "WIP: checkout form"; Wiederherstellen mit git stash apply, wenn Sie den gespeicherten Eintrag behalten möchten, oder git stash pop, wenn Sie ihn nach einer erfolgreichen Wiederherstellung entfernen möchten. Fügen Sie -u hinzu, wenn auch neue, nicht verfolgte Dateien zum Werk gehören.

In dieser Anleitung wird als Beispiel eine Unterbrechung eines Checkout-Formulars verwendet: Halten Sie das Formular an, beheben Sie einen Produktionsfehler in einem anderen Zweig und kehren Sie dann zum Formular zurück. Die visuelle Komplettlösung verwendet GitTree, den Client, den wir für macOS, Windows und Linux erstellen. Die Vorratsverwaltung ist im Free-Plan enthalten; Aktuelle offizielle Builds erfordern eine Anmeldung.

Wann sollte ein Stash, ein Commit oder ein Arbeitsbaum verwendet werden?

Wählen Sie aus, wie Sie Ihre Arbeit unterbrechen möchten
SituationBenutzenGrund
Eine kurze Unterbrechung mit unvollendeten BearbeitungenVersteckLöschen Sie die Dateien vorübergehend, ohne einen normalen Branch-Commit hinzuzufügen
Arbeit, die Sie aus der Ferne teilen oder sichern müssenCommit und Push zu einem geeigneten ZweigVerstecke bleiben lokal; Ein normaler Push lädt sie nicht hoch
Zwei Aufgaben, die Sie gleichzeitig öffnen möchtenArbeitsbaumJede Aufgabe erhält einen eigenen Arbeitsordner

Für längere parallele Aufgaben verwenden Sie den Worktree-Leitfaden. Ein Stash ist ein praktischer temporärer Speicher, sollte jedoch nicht Ihre einzige Sicherung wertvoller Arbeit sein. Benennen Sie Einträge nach der Aufgabe, da stash@{0} den neuesten Eintrag bedeutet und sich die Nummern ändern, wenn sich die Liste ändert.

Änderungen speichern und Zweige wechseln: ein vollständiges Beispiel

Untersuchen Sie zunächst git status: Ein Standard-Stash enthält Änderungen an nachverfolgten Dateien, einschließlich gestaffelter Bearbeitungen, lässt jedoch nicht nachverfolgte und ignorierte Dateien in Ruhe. In diesem Beispiel enthält das Formular eine neu erstellte Datei. Verwenden Sie daher -u. Bei diesen Befehlen wird davon ausgegangen, dass feature/checkout und hotfix/payment bereits vorhanden sind. Ersetzen Sie Ihre eigenen Filialnamen.

git status
git stash push -u -m "WIP: checkout form"
git stash list
git status
git switch hotfix/payment

Beenden, testen und committen Sie den Hotfix, bevor Sie ihn zurücksenden. Überprüfen Sie die Stash-Liste und ihren Unterschied, bevor Sie sie anwenden: Möglicherweise hat eine andere Aufgabe in der Zwischenzeit einen neueren Eintrag erstellt. Das Zitieren eines Selektors wie "stash@{0}" verhindert auch, dass Shells seine Sonderzeichen interpretieren.

git switch feature/checkout
git stash list
git stash show -p --include-untracked "stash@{0}"
git stash apply "stash@{0}"
git status

Git Stash Apply vs. Pop: Welches sollten Sie wählen?

Einen Vorrat wiederherstellen
BefehlStellt Dateien wieder herBehält den Vorrat
git stash apply "stash@{0}"JaJa
git stash pop "stash@{0}"JaNein, nach Erfolg; ja, wenn Konflikte es stoppen
git stash apply --index "stash@{0}"Ja, und es wird versucht, den Staging-Status wiederherzustellenJa

Bei einer wichtigen, noch nicht abgeschlossenen Änderung wenden Sie diese zunächst an, überprüfen und testen Sie sie und löschen Sie dann den gespeicherten Eintrag, sobald Sie die wiederhergestellte Arbeit übernommen haben. Eine doppelte Anwendung kann zu Konflikten oder wiederholten Änderungen führen; Überprüfen Sie die Arbeitsdateien, bevor Sie es erneut versuchen. Weder apply noch pop pushen etwas an einen Server.

Speichern Sie nicht verfolgte Dateien, bestimmte Dateien oder bereitgestellte Änderungen

git stash push -u -m "WIP: include new files"
git stash push -m "WIP: checkout only" -- src/checkout.ts
git stash push --staged -m "WIP: staged changes only"
git stash push --keep-index -m "WIP: keep staged work ready"

Dies sind alternative Befehle, keine Sequenz, die zusammen ausgeführt werden kann. Ein Pfad nach -- beschränkt den Stash auf diesen Pfad. --staged speichert nur bereitgestellte Änderungen; --keep-index belässt die bereitgestellten Änderungen, sodass Sie sie testen oder festschreiben können, während Sie andere Änderungen zurückstellen. Sie lösen unterschiedliche Probleme. Ältere Git-Installationen unterstützen --staged möglicherweise nicht; Überprüfen Sie git --version und die Hilfe für Ihre installierte Version.

So speichern und wiederherstellen Sie Änderungen in GitTree

  1. Überprüfen Sie die laufende Arbeit

    Öffnen Sie die Zeile // WIP, überprüfen Sie die Dateien und wählen Sie neben „Commit“ die Registerkarte „Stash“.

  2. Wählen Sie den Umfang

    Wählen Sie Alle Änderungen, Nur bereitgestellte Änderungen oder Nur die ausgewählten Dateien aus. Aktivieren Sie Nicht verfolgte Dateien einbeziehen, wenn neue Dateien zur Aufgabe gehören.

  3. Geben Sie ihm einen Aufgabennamen

    Geben Sie eine Nachricht wie „WIP: Checkout-Formular“ ein und wählen Sie dann „Stash“ aus. Überprüfen Sie alle zurückgebliebenen Dateien, bevor Sie den Zweig wechseln. Ein teilweiser Vorrat löscht nicht die gesamte Arbeit.

  4. Vorschau vor der Wiederherstellung

    Klicken Sie im Abschnitt „Stashes“ mit der rechten Maustaste auf den richtigen Eintrag und wählen Sie „Stash anzeigen“, um dessen Dateien und Unterschiede zu überprüfen. Überprüfen Sie, ob der empfangende Zweig korrekt ist.

  5. Bewerben, überprüfen und abschließen

    Wählen Sie „Stash anwenden“, um den Eintrag beizubehalten, oder „Stash entfernen“, um ihn nach Erfolg zu entfernen. Überprüfen Sie die Änderungen, führen Sie Ihre Tests durch und führen Sie einen Commit durch, wenn Sie bereit sind.

Sehen Sie sich den Workflow auf der Registerkarte „Stash“ an: Überprüfen Sie die Änderungen, benennen Sie den Stash und speichern Sie ihn.
Sehen Sie sich den Workflow auf der Registerkarte „Stash“ an: Überprüfen Sie die Änderungen, benennen Sie den Stash und speichern Sie ihn.GitTree-Schnittstelle mit einem Demonstrations-Repository.

Möchten Sie diese Schritte mit Ihrem eigenen Repository ausführen? Laden Sie GitTree herunter, melden Sie sich an und öffnen Sie den Repository-Ordner. Ihre vorhandenen Stashes bleiben normale Git-Stashes, die auch vom Terminal aus sichtbar sind.

So lösen Sie Git-Stash-Pop-Konflikte

Ein Stash kann zu Konflikten führen, wenn der Zielzweig dieselben Zeilen geändert hat. Bei einem fehlgeschlagenen Pop bleibt der Stash erhalten, einige Änderungen wurden jedoch möglicherweise bereits angewendet. Lassen Sie es nicht wiederholt platzen. Führen Sie git status aus, lösen Sie jede nicht zusammengeführte Datei auf und stellen Sie nur die beabsichtigten Auflösungen bereit. Der Leitfaden zum Zusammenführen von Konflikten erklärt die Markierungen und den Drei-Wege-Editor.

git status
git diff --name-only --diff-filter=U
# Edit and test each conflicted file, then stage its resolution:
git add -- src/checkout.ts
git diff --cached
git status

Es gibt kein git stash --continue oder git stash --abort. Sobald die Dateien aufgelöst sind, überprüfen und übertragen Sie sie wie gewohnt. Wenn Sie den Versuch abbrechen möchten, behalten Sie alle vor der Anwendung vorhandenen Arbeiten bei und überprüfen Sie jeden geänderten Pfad, bevor Sie etwas verwerfen. Durch einen umfassenden Hard-Reset können nicht zusammenhängende Änderungen gelöscht werden. Wenn das Ziel zu weit auseinander gegangen ist, stellt git stash branch rescue/checkout "stash@{0}" auf einem neuen Zweig an der ursprünglichen Basis wieder her; Bei einem erfolgreichen Vorgang wird dieser Stash-Eintrag entfernt.

Löschen Sie einen Stash erst, nachdem Sie das Ergebnis überprüft haben

Verwenden Sie git stash list erneut vor git stash drop "stash@{0}": Die Position hat sich möglicherweise geändert. git stash clear entfernt die gesamte Liste. Die Wiederherstellung eines gelöschten Stashs in reinem Git ist ungewiss und hängt davon ab, ob seine Objekte noch vorhanden sind. Verlassen Sie sich nicht darauf, es später zu finden. In GitTree behält „Stash löschen“ den gelöschten Eintrag in Wiederherstellungs-Snapshots bei, sodass er durch „Rückgängig“ wiederhergestellt werden kann. Diese App-spezifische Wiederherstellung macht das Löschen des Terminals nicht zu einer garantiert wiederherstellbaren Aktion. Weitere Wiederherstellungsoptionen finden Sie unter Git-Fehler rückgängig machen.

Häufig gestellte Fragen

Speichert Git Stash nicht verfolgte Dateien?

Nicht standardmäßig. Verwenden Sie git stash push -u oder schließen Sie nicht verfolgte Dateien in GitTree ein. Ignorierte Dateien erfordern eine separate Auswahl; -u schließt sie nicht ein.

Kann ich einen Stash auf einen anderen Zweig anwenden?

Ja. Schauen Sie sich den Zielzweig an und übernehmen Sie dort den Eintrag. Überprüfen Sie zuerst den Unterschied: Der Stash hängt möglicherweise von Code ab, der in diesem Zweig fehlt.

Löscht Git Stash Pop den Stash bei Konflikten?

Nein. Git behält den Eintrag bei, wenn es zu Konflikten bei der Anwendung kommt. Lösen und überprüfen Sie die Arbeitsdateien, bevor Sie den Eintrag selbst entfernen.

Wird ein Stash nach GitHub verschoben?

Ein normaler Git-Push lädt keine Stashes hoch. Übertragen Sie die Arbeit an einem geeigneten Zweig und pushen Sie diesen Zweig, wenn Sie eine Remote-Kopie benötigen.

Ist die Stash-Verwaltung von GitTree kostenlos?

Ja, die Vorratsverwaltung ist Teil des kostenlosen Plans. Aktuelle offizielle Builds erfordern eine Anmeldung; GitTree Pro ist für diesen lokalen Git-Workflow nicht erforderlich.

Quellen

Behauptungen zu anderen Produkten wurden anhand der offiziellen Seiten auf 28. Oktober 2026 überprüft. Preise und Ausstattung ändern sich; Die Seiten der Anbieter sind die Quelle der Wahrheit.