前言
今天在使用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
网友评论