本地修改的文件,使用git stash暂存之后不小心将暂存区清空,重新找回之前被暂存的文件

概述

问题

日常使用git 时,将本地所做的修改使用git stash暂存,使用git pull拉取代码之后,之间用git stash clear将git stash暂存的内容删除掉了。本文讲述如何恢复git stash clear掉的暂存区代码。

解决方法

执行指令

  1. git log --graph --oneline --decorate $( git fsck --no-reflog | awk ‘/dangling commit/ {print $3}’ )

  2. git stash apply 编号

案例

按照上述的顺序操作,输入指令后回车。

  1. 输入指令

git log --graph --oneline --decorate $( git fsck --no-reflog | awk ‘/dangling commit/ {print $3}’ )

上述指令直接拷贝,然后回车,不需要做任何改动。
执行完之后,会出现如下的列表:
在这里插入图片描述
在上述出现的列表中找到可能存在自己所做修改的那行描述,拷贝前面的黄色编号。
如:我在暂存”添加需要展示的中心线列表的信号槽绑定及函数“时可能当时自己所做的修改存在,我已经忘记了,为了安全起见,我选择这行描述的下一行,”优化斑块“,故而我的指令是:

git stash apply b20ea19

  1. 输入指令

git stash apply b20ea19

但是回车后报错,可以看到下面的图片:
在这里插入图片描述
使用git stash list查看暂存区的内容。发现git stash list之后什么也没有。
在这里插入图片描述
于是,再使用指令git stash 暂存。这里之所以再暂存,是因为执行完git stash apply b20ea19报错原因是由于报错中提到的两个冲突文件(之前冲突的文件,现在已经不冲突)
暂存之后,接着执行

git stash apply b20ea19

可以看到,执行完之后,没有报错。且找到了之前删掉的在暂存区的文件。

附加收获

  1. 清空暂存区

git stash clear

  1. 暂存修改的文件

git stash

3.拉取最近的暂存

git stash pop

4.恢复被清除的暂存区文件

git log --graph --oneline --decorate $( git fsck --no-reflog | awk ‘/dangling commit/ {print $3}’ )
git stash apply 编号

这里的编号,是第一行指令回车后,根据自己的文本描述,定位自己之前没有被删除的文件所在的编号。

猜你喜欢

转载自blog.csdn.net/blqzj214817/article/details/129046453