2016-05-16 11 views
1

Ich habe rebase.autoStash auf 'true' in meinem .gitconfig eingestellt, was mir ermöglicht, rebase auf einem schmutzigen Arbeitsbaum zu laufen. Wenn jedoch ein rebase aus irgendeinem Grund abgebrochen wird, sind alle Änderungen an nachverfolgten Dateien weg (d. H. Der Autostash wird nicht erneut angewendet). Was ist der richtige Weg, den Autostash in solchen Fällen anzuwenden?Wie setze ich nach einer abgebrochenen Rebase Autostash ein?

Wie zu reproduzieren:

  • Run git config rebase.autostash true.
  • Bearbeiten Sie einige verfolgte Dateien.
  • Führen Sie git rebase -i HEAD^^^. Dies druckt etwas wie:

    Created autostash: 75a5188 
    HEAD is now at f0c93f1 WIP 
    
  • Abbruch der Rebase, z.B. Lassen Sie den Editor mit einem Fehlercode (:cq in Vim) beenden.

+0

Kann nicht reproduzieren. Wenn ich die angegebene Sequenz ausführe, wird der Speicher erneut verwendet. Auch Git protokolliert explizit Stash SHA-1, so dass Sie den Status nach ID wiederherstellen können. git-2.6.5 – user3159253

+0

Sieh dir http://pastebin.com/wETbyMik an. Wie du sehen kannst, hat Git den Stash nach fehlgeschlagener Rebase wiederhergestellt. Wenn nicht, kannst du immer etwas wie "git checkout 75a5188 -." Machen und deine Arbeit fortsetzen – user3159253

+0

@ user3159253: kannst du versuchen, den Editor mit einem Fehlercode zu beenden (z. B. ': cq' in Vim)? Wahrscheinlich habe ich die Rebase abgebrochen. –

Antwort

1

Sie können die autostash anwenden git stash apply verwenden und die SHA-1-Hash, wurde gedruckt von git rebase:

$ git rebase -i HEAD^^^ 
Created autostash: 3ac3f4a 
HEAD is now at f0c93f1 WIP 
# abort the rebase...  
$ git stash apply 3ac3f4a 
On branch master 
... 
1

Auch wenn git versagt hat, den Zustand wiederherzustellen, können Sie es jederzeit tun manuell git checkout <stash-id> -- . mit dem <stash-id> in Created autostash: ... Linie gemeldet

+1

Dies ist nicht genau äquivalent zu "Anwendung der Autostash", siehe meine Antwort für eine Alternative. –

+0

Ich würde 'git stash pop' verwenden, aber trotzdem funktioniert es – user3159253

+0

Nein,' git stash pop' gibt 'Kein stash gefunden.' Anscheinend speichert' rebase' den stash nirgendwo. –

Verwandte Themen