git stash save -a 之殇: already exists, no checkout,Could not restore untracked files from stash entry

之前一直用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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值