Git 恢复暂存区(git add之后的)文件

git在执行add命令后, 会将文件改动存入暂存区, 如果没有commit就直接回退版本, 会导致暂存区的数据丢失.

但是可以通过以下办法找回:

1.找出最近放到缓存区的的文件

find .git/objects -type f | xargs ls -lt | sed 10q

这个命令会列出最近修改的10个文件,结果如下

-r--r--r--  1 wangdi  staff       202 11 25 14:19 .git/objects/7b/b3b74de4432b36d4c8be1109cb887b3858e37a
-r--r--r--  1 wangdi  staff       282 11 25 14:19 .git/objects/f2/d4073df05e0275c931ca94f046847984bd42c6
-r--r--r--  1 wangdi  staff       345 11 25 14:19 .git/objects/49/88d62d11b4d46ba0e486fb11ffea1d5c8f91c6
-r--r--r--  1 wangdi  staff       174 11 25 14:19 .git/objects/af/27d3d78a294139e295e7dd1033ddabce52a8ae
-r--r--r--  1 wangdi  staff        80 11 25 14:19 .git/objects/d6/834e800bfbc02f7d3bb13e3267c40deadc4e84
-r--r--r--  1 wangdi  staff       132 11 25 14:19 .git/objects/39/172cb7f6d7bc3087e857cbc08c44f339e03abe
-r--r--r--  1 wangdi  staff        74 11 25 14:19 .git/objects/82/3fa3dc5341a7f1edfd8c7819576a2cbc210248
-r--r--r--  1 wangdi  staff       167 11 25 14:19 .git/objects/66/f1cc31dc3e842adab417eb39a1eaaf02a0645d
-r--r--r--  1 wangdi  staff       163 11 25 14:19 .git/objects/42/cc312740bfda42c88292eb6b2ff433db854edb

2.输出文件内容

因为这些文件都是通过特殊处理的,无法直接看到文件内容,需要通过如下命令输出一下

git cat-file -p ID > fileName

其中ID为Objects后面的文件编号(去掉/),ResultFile是输出结果的文件,具体使用演示如下

git cat-file -p 7bb3b74de4432b36d4c8be1109cb887b3858e37a >~/aaaa/b3b74de4432b36d4c8be1109cb887b3858e37a

我是在自己的根目录下建立了一个aaaa的文件夹,然后通过终端,在该目录下搜索某个文件中的关键字符(如:STUrl_userAgreement)可以找到对应的文件

grep -Fnr STUrl_userAgreement .

结果如下:

./dc7a4d3a91cee7f9567f082a1aea0bc65075b5:11:let STUrl_userAgreement = "https://app.strongwinds.cn/about/user-agreement.html"
./e66441250d8fac370726ea4a18b6cb3e933e5e:275:        webController.url = STUrl_userAgreement

这样就可以找到对应内容的文件了!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容