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数据丢失后怎么找回?)