恢复git reset --hard origin/master操作后丢失的代码

点击这里的怕是都和我一样经历了失去代码的心碎。

我的经历是和同事在同一分支下开发,在vscode中提交后发现冲突,不知道点了什么发现一只无法正常提交后百度到这个办法git reset --hard origin/master,然后他的代码拉进来了。我的代码无了!!!!!!

以下是我亲身找回代码的过程

1.在.git/objects下按时间顺序,找到你的最新60条存储到本地仓库的记录

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

恢复git reset --hard origin/master操作后丢失的代码

 

 

 然后你会看到一串这样的东西,根据同一时间判断你最新提交的东西在哪些文件里面。

2.复制那个文件名 .git/objects/59/dc3e680de898ddc7d4881a0e9832a9a6eef047

放到下面代码中间部分(head -n 20 是输出前20行。你也可以改成9999)

这命令行不明白什么意思的可以去看https://www.jianshu.com/p/918f950fbd58

printf "\x1f\x8b\x08\x00\x00\x00\x00\x00" | cat - .git/objects/59/dc3e680de898ddc7d4881a0e9832a9a6eef047 | gunzip 2>/dev/null | sed -z 1d | head -n 20

会发现有的文件是乱码。因为有的是你提交的信息,或者一些图片。

恢复git reset --hard origin/master操作后丢失的代码

 

 上面就是其中两个文件编码后转换回来的数据。我只要我的vue代码。所以我可以看到哪些文件是我需要的。直接在上面代码后面把 | head -n 20 改成 > 你要生成的文件名

printf "\x1f\x8b\x08\x00\x00\x00\x00\x00" | cat - .git/objects/59/dc3e680de898ddc7d4881a0e9832a9a6eef047 | gunzip 2>/dev/null | sed -z 1d > test_demo

然后你就能找到在你项目下的test_demo文件。里面就是你心爱的代码。

下次别再 reset hard了!

 

上一篇:Matplotlib&Numpy


下一篇:Python内置数据结构----bytes和bytearray