Was ist git stash?
Mit Git stash können Sie einen Entwurf Ihrer Änderungen, die noch nicht übertragen wurden, vorübergehend speichern und das Arbeitsverzeichnis in einen sauberen Zustand zurückversetzen. Dies kann nützlich sein, wenn Sie den Kontext wechseln und an etwas anderem arbeiten möchten, aber keine unvollendete Arbeit übertragen wollen.
Wie Git Stash funktioniert
Wenn Sie git stash
ausführen, speichert Git alle nicht übertragenen Änderungen in Ihrem Arbeitsverzeichnis in einem Stash - im Wesentlichen ein Stapel von gespeicherten Änderungen. Dadurch werden alle nicht übertragenen Änderungen aus Ihrer Arbeitskopie entfernt, damit sie wieder mit dem HEAD-Commit übereinstimmen.
Versteckte Änderungen existieren an einem separaten Ort, bis Sie bereit sind, sie wieder anzuwenden. So können Sie zwischen verschiedenen Zweigen umschalten, Änderungen aus der Ferne ziehen, rebasen usw., ohne unvollendete Arbeit zu committen.
Git Stash-Arbeitsablauf
Im Folgenden finden Sie einen Überblick über gängige Git Stash-Arbeitsabläufe.
Änderungen stashen
Legen Sie vor dem Stashing alle neuen oder geänderten Dateien fest, damit Git sie verfolgen kann:
$ git add .
Wenn Sie bestimmte Dateien auslagern wollen, geben Sie einfach die Dateinamen beim Auslagern an:
$ git add file.txt demo.txt
Dann erstellen Sie einen neuen Stash:
$ git stash
Dies speichert Ihre Änderungen und stellt Ihr Arbeitsverzeichnis so um, dass es mit dem HEAD-Commit übereinstimmt.
Benennen von Stashes
Um einem Stash einen eigenen Namen zu geben, wenn er erstellt wird, verwenden Sie die Option -m:
$ git stash -m „<Name>“
Mit der Option -m können Sie den Stash benennen, um ihn später leichter identifizieren zu können.
Stashes ansehen
Um eine Liste aller Ihrer Stashes zu sehen:
$ git stash list
Sie können sich eine Zusammenfassung eines Stashes mit git stash show
ansehen
$ git stash show
Dabei ist stash die Stash-Referenz, die in „git stash list“ angezeigt wird.
Anwenden von Stashes
Später, wenn Sie bereit sind, wenden Sie die versteckten Änderungen mit git stash pop
wieder an
$ git stash pop
Damit werden die Änderungen angewendet und der Stash aus der Liste entfernt. Um den Stash zu behalten, verwenden Sie stattdessen git stash apply
.
$ git stash apply
Anwenden bestimmter Stashes
Um einen anderen Stash als den aktuellsten anzuwenden:
$ git stash apply stash
Oder:
$ git stash pop --index stash
Dabei ist index
die Stash-Nummer aus der „git stash list“. Denken Sie daran, dass apply den Stash beibehält, während pop ihn nach der Anwendung wieder entfernt.
Erstellen eines neuen Zweigs mit einem angewandten Stash
Sie können einen neuen Zweig erstellen, der die Änderungen eines Stashs enthält:
$ git stash branch Branch-Name stash
Dies checkt einen neuen Zweig aus, der die Änderungen des Vorrats enthält und an dem Commit verankert ist, an dem der Vorrat ursprünglich erstellt wurde.
Stashes entfernen und leeren
Wenn Sie Ihren Stash nicht mehr benötigen, können Sie ihn löschen:
$ git stash drop stash
Damit wird ein einzelner Stash-Eintrag aus der Liste der Stash-Einträge entfernt. Um alle Stash-Einträge zu entfernen, verwenden Sie clear
:
$ git stash clear
Die Einträge werden beschnitten und können möglicherweise nicht mehr wiederhergestellt werden.
Zusätzliche Optionen
Es gibt viele zusätzliche Stash-Optionen, einschließlich der Möglichkeit, Stashes zu pushen und Stashes zu speichern. Siehe Git Dokumentation für weitere Details.
Wann sollte man Git Stash verwenden
Git Stash ist ideal, wenn Sie schnell zwischen verschiedenen Zweigen oder Zuständen eines Projekts umschalten müssen. Zum Beispiel:
-
Wechseln zu einem anderen Zweig, um die letzten Änderungen zu übernehmen
-
Vorübergehende Unterbrechung der Arbeit, um einen Hotfix oder Fehler zu beheben
-
Sie müssen Ihren Zweig umstellen und mit Konflikten umgehen
-
Anhalten der Arbeit, um einen Upstream-Zweig in Ihren Feature-Zweig zusammenzuführen
Stash ermöglicht es Ihnen, diese Dinge zu tun, ohne halbfertige Arbeit an das Repository zu übergeben.
Zusammenfassung
Git Stash gibt Entwicklern die Möglichkeit, lokale Änderungen beiseite zu legen, ohne sie zu committen, und ermöglicht so einen sauberen Wechsel zwischen Kontexten und Zweigen. Dies macht stash zu einem wertvollen Werkzeug für die Verwaltung von Arbeitsabläufen und Kontexten in Git.