Ich hatte immer den Eindruck, dass man einem Versteck mit git stash save stashname
einen Namen geben kann, den man später mit git stash apply stashname
anwenden kann. Aber es scheint, dass in diesem Fall alles, was passiert, ist, dass "stashname" als Stash-Beschreibung verwendet wird.
Gibt es keine Möglichkeit, einen Stash tatsächlich zu benennen? Wenn nicht, was würden Sie empfehlen, um eine gleichwertige Funktionalität zu erreichen? Im Wesentlichen habe ich einen kleinen Stash, den ich regelmäßig anwenden möchte, aber ich möchte nicht immer in git stash list
nachsehen müssen, was seine tatsächliche Stash-Nummer ist.
So machen Sie es:
git stash save "my_stash"
Wobei "mein_Versteck"
der Name des Verstecks ist.
Einige weitere nützliche Dinge zu wissen: Alle Verstecke werden in einem Stapel gespeichert. Typ:
git stash list
Dies listet alle deine Verstecke auf.
Um einen Vorrat anzuwenden und ihn aus dem Vorratsstapel zu entfernen, geben Sie ein:
git stash pop stash@{n}
Um einen Zwischenspeicher anzuwenden und ihn im Zwischenspeicherstapel zu behalten, geben Sie ein:
git stash apply stash@{n}
Dabei ist n
der Index der gespeicherten Änderung.
Sie können ein Versteck in einen Zweig umwandeln, wenn Sie es für wichtig genug halten:
git stash branch <branchname> [<stash>]
aus der Manpage:
Dies erzeugt und checkt einen neuen Zweig namens <branchname>
aus, beginnend mit dem Commit, bei dem der <stash>
ursprünglich erzeugt wurde, wendet die in <stash>
aufgezeichneten Änderungen auf den neuen Arbeitsbaum und den Index an und lässt den <stash>
fallen, wenn dies erfolgreich abgeschlossen wurde. Wenn kein <stash>
angegeben wird, wird der neueste angewendet.
Dies ist nützlich, wenn sich der Zweig, auf dem Sie git stash save
ausgeführt haben, so stark verändert hat, dass git stash apply aufgrund von Konflikten fehlschlägt. Da der Stash auf den Commit angewendet wird, der zu dem Zeitpunkt, als git stash ausgeführt wurde, HEAD war, wird der ursprüngliche Stash-Zustand ohne Konflikte wiederhergestellt.
Sie können diesen neuen Zweig später an einer anderen Stelle wieder einbinden, die von der Stelle abstammt, an der Sie sich befanden, als Sie den Stash ausgeführt haben.
Stashes sind nicht dazu gedacht, dauerhaft zu sein, wie Sie es wünschen. Sie sind wahrscheinlich besser bedient, wenn Sie Tags für Commits verwenden. Konstruieren Sie die Sache, die Sie auslagern wollen. Machen Sie einen Commit daraus. Erstellen Sie ein Tag für diesen Commit. Dann rollen Sie Ihren Zweig auf HEAD^
zurück. Wenn Sie nun das Stash wieder anwenden wollen, können Sie git cherry-pick -n tagname
(-n
ist --no-commit
) verwenden.