因为需要切换分支开发新功能,因此需要暂时储藏当前分支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"
这个处理方法很垃圾,你有好方法吗?