Versehentlich zweimal git stash pop

9

Ich habe versehentlich git stash pop zweimal ausgeführt, um mir einen Platz zu verschaffen, wo ich sein wollte. Wie mache ich den letzten Popup rückgängig? Ich möchte den ersten Pop aber nicht den zweiten, also reset --hard HEAD wird es nicht für mich tun.

    
amphibient 18.02.2014, 04:07
quelle

2 Antworten

9

"Das Rückgängigmachen von" git stash pop ist irgendwie schmerzhaft, wenn Sie nicht die rohen Commit-IDs für Ihre Stashs irgendwo aufgelistet haben (z. B. auf Ihrem Bildschirm).

Die git stash -Dokumentation enthält Anweisungen (am Ende ) für die Wiederherstellung fallen gelassener Fälle. Dies sind die Anweisungen, die Sie wollen, da pop einfach " apply und dann drop " ist. Das heißt, wenn Sie beide Stashes wiederherstellen, können Sie git reset --hard verwenden, um alles wiederherzustellen, git stash pop (oder -sicherer, weil es nicht "ablegt" - git stash apply ) wollte verwenden, und dann alles überprüfen.

Wenn Sie beide Taschen finden und wiederherstellen können, würde ich das wahrscheinlich tun.

Wenn Sie nur den zweiten Stash finden (den, den Sie "nicht anwenden" wollen), können Sie versuchen, ihn umzukehren.

Hier ist die "Beschwörung" aus der Dokumentation:

%Vor%

Wenn Sie das ausführen, erhalten Sie eine Liste der Commits, die jedes w commit von jedem darstellen "Verstecksack" . Lassen Sie uns sagen, dass es etwas wie folgt ausgibt:

%Vor%

Die date -Zeile ist hier nützlich, da es der Zeitpunkt ist, an dem der Stash gemacht wurde. Es ist ziemlich schwer, diese beiden Löcher auseinander zu halten, oder? Speichern Sie die rohen SHA-1-IDs irgendwo und führen Sie git stash show -p auf jedem aus. Wenn Sie einen wertvollen finden, geben Sie ihm einen Namen:

%Vor%

Wenn Sie sicher sind, welche die richtigen sind, können Sie Dinge wie git reset --hard und dann git stash apply erledigen. Sie können nun anhand der oben angegebenen Tag-Namen Folgendes anwenden:

%Vor%

Wenn alles so gespeichert und übergeben wurde, wie Sie es möchten, können Sie die verschiedenen "recover" -Tags löschen. (Beachten Sie, dass Sie einen beliebigen Namen verwenden können. Es gibt nichts besonderes an recover-exp- , das ist nur etwas, was ich hier gemacht habe.)

    
torek 18.02.2014, 04:33
quelle
1

Ich glaube nicht, dass Sie den letzten Pop einfach wieder rückgängig machen können. Sie werden wahrscheinlich nur zu diesem Zeitpunkt mit den Konflikten umgehen müssen, wenn Sie beim ersten Mal etwas brauchen.

Wenn Sie in Zukunft Probleme wie diese vermeiden möchten, können Sie sich auf lokale Zweige festlegen, anstatt auf Speicher zu setzen. Es ist mühsamer, aber widerstandsfähiger.

    
quickshiftin 18.02.2014 04:28
quelle

Tags und Links