git数据丢失后怎么找回?

前言

今天在使用git进行第一次提交的时候出现了问题,无意中在还没commit的时候调用了方法

git reset --hard FETCH_HEAD

瞬间文件全部丢失

找回

按照git的标准逻辑,如果我们commit后可以使用命令

git reflog

来找到我们的提交记录,例如:

图一

我们可以使用:

git reset --hard 97c4b00c

重新找回我们的版本!但是不幸的是我们并没有进行commit所以是没有记录的!我当时是添加到暂存区后使用git reset后被覆盖到!所以必须使用其他的方法

使用 git add 添加到了暂存区然后被 git reset 覆盖

我们使用命令

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

这里的 10q 指的就是你最近添加的 10 条 add 的记录,根据你丢失文件的多少进行选择。然后出现的信息如下:

图二

这里就是你add后的文件记录,单条记录就是一个文件

我们可以使用命令:

git cat-file -p f6fc3b8ce768b4c58ac44c7a6f45489cba95497d

会将 add 中的文件重新写到新文件中,进行恢复。
此外,还有一种方法进行恢复。执行:

git fsck --lost-found

然后去到 .git/lost-found 目录下面可以找到自己已经丢失的文件。文件不会是原来的名字,需要自己打开去查看和对比。

查看这些文件显示出来的是经过了哈希算法的乱码显示的!
这写文件我们可以按照导出来使用命令的方式重新构建成一个文件,然后放到我们相应的编译器的位置中去,这样就算数据找回了

最后

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

推荐阅读更多精彩内容

  • 一、基本概念: 注:对于git的分布式概念及其优点,不重复说明,自己百度或谷歌。本文中涉及到指令前面有$的,在cm...
    大厂offer阅读 1,456评论 0 3
  • 1. GIT命令 git init在本地新建一个repo,进入一个项目目录,执行git init,会初始化一个re...
    江边一蓑烟阅读 828评论 0 0
  • Add & Commit git init 初始化一个 Git 仓库(repository),即把当前所在目录变成...
    冬絮阅读 4,935评论 0 9
  • 查看、添加、提交、删除、找回,重置修改文件 git help # 显示command的help git sho...
    Swiftor阅读 2,140评论 0 2
  • 使用git进行版本管理 常识 文件的几个状态:Untracked,Unmodified(已修改,此时文件在工作目录...
    前端开发爱好者阅读 710评论 0 0