点击这里的怕是都和我一样经历了失去代码的心碎。
我的经历是和同事在同一分支下开发,在vscode中提交后发现冲突,不知道点了什么发现一只无法正常提交后百度到这个办法git reset --hard origin/master,然后他的代码拉进来了。我的代码无了!!!!!!
以下是我亲身找回代码的过程
1.在.git/objects下按时间顺序,找到你的最新60条存储到本地仓库的记录
find .git/objects -type f | xargs ls -lt | sed 60q
然后你会看到一串这样的东西,根据同一时间判断你最新提交的东西在哪些文件里面。
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
会发现有的文件是乱码。因为有的是你提交的信息,或者一些图片。
上面就是其中两个文件编码后转换回来的数据。我只要我的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了!