天天看點

git stash save -a 引發的 Could not restore untracked files from stash 問題

因為需要切換分支開發新功能,是以需要暫時儲藏目前分支

feature-22

,git stash -h檢視了下指令說明

git stash save [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet]
         [-u|--include-untracked] [-a|--all] [<message>]
           

根據提示,想當然地使用了

git stash save -a "message"

在建立分支開發完送出之後,切換回

feature-22

分支,使用git stash apply 指令應用儲藏時,提示下面異常,不能正常應用之前儲藏的代碼。

XXXX.class already exists, no checkout
XXXX.class already exists, no checkout
Could not restore untracked files from stash 
           

根據異常,查到一篇博文Could not restore untracked files from stash —— git stash -a 之後的事故處理

可能場景不太一樣,按照步驟但是沒有達到想要的效果,找其他的文章解決方案也和這個差不多,沒找到其他的解決方案。

此時有點慌了,因為之前儲藏的代碼有點多,要是重寫估計得撞牆。

仔細看了下錯誤提示,除了最後一句,都是提示

XXXX.class already exists, no checkout

,就想既然提示這些檔案已存在,如果全删除,是不是就可以恢複了,隻能死馬當活馬醫,試試看了。

把工作空間備份之後,經過幾次删除之後,

git stash apply

指令正常執行了,喜出望外。

檢視代碼,發現隻恢複了

git stash

時修改的檔案,未做修改的檔案未恢複。

雖然效果不是很好,但也比沒有強啊,苦中作樂吧。

然後重新拉取了代碼,然後将修改的部分拷貝到新代碼中,曲線救國。

處理方法總結:

1)将工作空間先備份(這點相當重要)

2)将提示存在的檔案都删除

3)使用git stash apply 指令,将之前修改的檔案恢複

4)重新拉取代碼,将修改的部分同步到新代碼中

建議儲藏時使用指令: git stash save "message"

這個處理方法很垃圾,你有好方法嗎?