我意外執行了git stash pop
兩次讓我躲在我想要的位置後面。我如何撤消最後一個流行音樂?我確實想要第一個彈出,但不是第二個,所以reset --hard HEAD
不會爲我做。意外地跑了兩次git stash彈出
回答
「撤消」git stash pop
是一種痛苦的,除非你有在你的屏幕上列出你的窗口的原始提交ID。
git stash
documentation有方向(最後)用於恢復掉落的包裝。這些是您想要的說明,因爲pop
只是「apply
,然後drop
」。這意味着如果你恢復了兩個擋板,然後你可以使用git reset --hard
恢復一切,git stash pop
(或更安全,因爲它不會「掉落」 - git stash apply
)你想使用的那個,然後驗證一切。
如果你可以找到並恢復兩個包裝,那可能是我該怎麼做。
如果您只能找到第二個存儲(您想要「取消應用」的存儲),您可以嘗試反向應用它。
下面是從文檔中的「咒語」:
git fsck --unreachable | grep commit | cut -d\ -f3 | xargs git log --merges --no-walk --grep=WIP
當你運行這個你會得到代表每個w
提交各"stash bag"的提交列表。比方說,它轉儲出來是這樣的:因爲它是藏匿發生的時間
Checking object directories: 100% (256/256), done.
Checking objects: 100% (66/66), done.
commit 2783bc8cf98192acc3de647d6cbff2c1a2aecca5
Merge: 222c4dd 8466342
Author: ...
Date: Wed Feb 12 17:38:13 2014 -0700
WIP on branch: 222c4dd add clobber-reg example
commit e9fc3cc8e7864813b54bb1281c845297a16b1b47
Merge: 222c4dd d790e1f
Author: ...
Date: Wed Feb 12 17:28:00 2014 -0700
WIP on branch: 222c4dd add clobber-reg example
的date
線在這裏非常有用。很難分開那兩個擋板,不是嗎?將原始SHA-1 ID保存在某處,然後在每個ID上運行git stash show -p
。當你發現一個有價值的,給它一個名字:
$ git tag recover-exp-1 e9fc3cc8e7864813b54bb1281c845297a16b1b47
$ git tag recover-exp-2 ...
一旦你肯定哪些是正確的恢復的,你是好於做這樣的事情git reset --hard
然後git stash apply
方面去。您現在可以通過上面所做的標記名稱申請:
$ git reset --hard # ouch, all gone now (maybe "git stash save" first)
$ git stash apply recover-exp-3 # that turned out to be the right one
當所有被保存並提交你想要的方式,你可以刪除各種「恢復」標籤。 (注意,你可以使用任何你喜歡的名字; recover-exp-
沒什麼特別的,這只是我在這裏編造的東西。)
我不相信你可以很容易地撤銷最後一個流行音樂。如果您需要從第一個流行音樂中獲得所需的東西,那麼您可能只需在此處處理衝突。
未來,如果你想避免這樣的問題,你可以在本地分支而不是使用stashes。這更麻煩,但更有彈性。
隱藏本身依賴於reflog。 – linquize
- 1. Git stash在master分支上彈出
- 2. 意外地用sudo跑pip
- 3. git commit,git stash和git stash pop後不會出現提交的文件
- 4. Appliy git stash彈出到新的子模塊
- 5. 撤銷髒工作樹上的git stash彈出
- 6. 如果有任何東西彈出,只能調用'git stash pop'
- 7. Git Stash:困境
- 8. Rstudio Git bash每次彈出
- 9. git stash pop vs git rebase
- 10. 的Git藏匿兩次
- 11. Atlassian Stash vs Git Client
- 12. Git Stash UNJACKED在IntelliJ
- 13. URL意外地更改了
- 14. 夜間跑步單次測試兩次
- 15. BootStrap DatePicker彈出兩次
- 16. 我可以使用git pull --rebase而不是「git stash git pull git stash pop」嗎?
- 17. git stash pop和git stash之間的區別適用
- 18. git在windows遠端意外掛了
- 19. 意外地創建了一個git子模塊
- 20. git隱藏彈出兩次後的錯誤
- 21. 意外的T_Variable!已經檢查了兩次編碼
- 22. 出界外的輸出,但跑了我想要它做的
- 23. 班級意外創建了2次
- 24. 調用cin.get()兩次:意外的結果?
- 25. 我意外地綁定了兩個可觀察的集合嗎?
- 26. Git暗藏意外分支開關
- 27. .ShowDialog()出現了兩次
- 28. Git Stash的內容丟失
- 29. git stash保存-u和-p
- 30. 意外的地址輸出
沒關係。我發現它是一個PIA。所以我剛剛做了'重置-hard',並且吸取了最後一次更改集的重做,幸運的是沒有太多。 – amphibient