2016-05-16 34 views
1

我的rebase.autoStash設置爲'true'在我的.gitconfig,這使我可以在髒工作樹上運行rebase。但是,如果rebase由於某種原因而中止,則對跟蹤文件的所有更改都將消失(即不會重新應用自動存儲)。在這種情況下應用自動存儲的正確方法是什麼?如何在中止rebase之後應用autostash?

如何重現:

  • 運行git config rebase.autostash true
  • 編輯一些跟蹤的文件。
  • 運行git rebase -i HEAD^^^。這打印類似於:

    Created autostash: 75a5188 
    HEAD is now at f0c93f1 WIP 
    
  • 中止rebase,例如,編輯器退出並顯示錯誤代碼(Vim中的:cq)。

+0

無法重現。按照指定的順序給我重新應用藏匿。此外,git顯式地記錄存儲SHA-1,所以你可以通過ID恢復狀態。 git-2.6.5 – user3159253

+0

看看http://pastebin.com/wETbyMik如你所見,git在rebase失敗後恢復了存儲。如果不是,你總是可以做一些事情,比如'git checkout 75a5188 - .'並繼續你的工作 – user3159253

+0

@ user3159253:你能否嘗試用錯誤代碼退出編輯器(例如Vim中的':cq')?這可能是我用來中止rebase的原因。 –

回答

1

您可以申請使用git stash apply的autostash和SHA-1散列是由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

即使混帳未能恢復狀態,你總是可以做到這一點使用git checkout <stash-id> -- .其中<stash-id>Created autostash: ...在線報道手動

+1

這不完全等同於'應用自動存儲',請參閱我的答案以獲取替代方案。 –

+0

我會使用'git stash pop',但是,它的工作原理是 – user3159253

+0

不,'git stash pop'給出'沒有找到隱藏的東西。「顯然,」rebase「不會在任何地方存儲隱藏的東西。 –

相關問題