之前一直用git stash 和git stash pop 命令,缓存暂不提交的文件,昨天有个紧急事情,想给暂存的文件一个信息标识,于是临时查询了git stash save -a "message标识信息" 命令。
切换分支处理完事情之后,再各种 git stash pop 和 git stash apply 命令,出现了如题的提示:
***** already exists, no checkout,
Could not restore untracked files from stash entry
解决:
执行命令:git log --graph --all --decorate --oneline
git log --graph --all --decorate --oneline命令来查这个此次执行git stash save -a命令 commit的id。
命令参数说明:
:--graph意思是以图形的模式显示分支,
--all意思是显示所有的commit记录,
--decorate参数用来显示一些相关的信息,如HEAD、分支名、tag名等,
--oneline就是一个commit只显示一行。
由于各种commit id 太多,不容易查找,故最终直接进行筛选:
git log --graph --all --decorate --oneline | grep "stash"
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | *-. 7dd43268c (refs/stash) On feature-jdOrder-20200602: message标识信息
得到commit id 为:7dd43268c
接下来执行:
git checkout 7dd43268c,此时会把分支切换为当前commitid的分支,即
7dd43268c 。如果不考虑其他,可以直接使用git checkout -b new-branch 创建一个新分支,即可。
如果想用之前的分支,则在执行完git checkout 7dd43268c 之后,然后git reset HEAD~1,把commit reset掉,重新使用git stash -u保存修改到stash中。即可。
主要参考下文的作者,再次表示感谢:
链接:https://www.jianshu.com/p/efb9f2f1bd05