Ich bin mir nicht sicher, warum dieses Thema so bestürzt ist. Ich kann einen Stash sowohl mit einem Push als auch mit dem veralteten Speichern benennen, und ich kann einen regulären Ausdruck verwenden, um ihn mit einem Apply zurückzuziehen:
Git-Stash-Methode, um einen Namen zum Anwenden zu verwenden
$ git stash push -m "john-hancock"
$ git stash apply stash^{/john-hancock}
Wie bereits erwähnt, ist der Befehl save veraltet, funktioniert jedoch weiterhin. Sie können ihn daher auf älteren Systemen verwenden, auf denen Sie sie nicht mit einem Push-Aufruf aktualisieren können. Im Gegensatz zum Push-Befehl ist der Schalter -m beim Speichern nicht erforderlich.
// save is deprecated but still functional
$ git stash save john-hancock
Probleme mit einem Pop & Drop
Ich glaube nicht, dass es mit einem Pop funktioniert, aber ich denke, das liegt daran, dass der Pop nach dem Anwenden einen Drop ausführt und der Regex nicht Drop-freundlich ist. Das ist aber nur eine Vermutung. Ich habe es nicht getestet.
Dies ist Git 2.2 und Windows 10.
Visueller Beweis
Hier ist ein wunderschönes animiertes GIF, das den Prozess demonstriert.
Reihenfolge der Ereignisse
Das GIF läuft schnell, aber wenn Sie schauen, ist der Prozess der folgende:
- Der Befehl ls zeigt 4 Dateien im Verzeichnis an
- touch example.html fügt eine fünfte Datei hinzu
- git stash push -m "john-hancock" -a (Das -a enthält nicht verfolgte Dateien)
- Der Befehl ls zeigt 4 Dateien nach dem Stash an, was bedeutet, dass der Stash und der implizite Hard-Reset funktioniert haben
- git stash apply stash ^ {/ john-hancock} läuft
- Der Befehl ls listet 5 Dateien auf und zeigt, dass die Datei example.html zurückgebracht wurde, was bedeutet, dass der Befehl git stash apply funktioniert hat.
Macht das überhaupt Sinn?
Um ehrlich zu sein, bin ich mir nicht sicher, welchen Nutzen dieser Ansatz hat. Es ist wertvoll, dem Stash einen Namen zu geben, aber nicht den Abruf. Vielleicht wäre es hilfreich, den Prozess zu skripten, aber es ist immer noch viel einfacher, nur einen Vorrat mit Namen zu platzieren.
$ git stash pop 3
$ git stash apply 3
Das sieht für mich viel einfacher aus als der reguläre Ausdruck.
git stash push -m stashname
ist die aktuelle Syntax .git stash save stashname
wurde veraltet.