前言
今天在使用git進(jìn)行第一次提交的時(shí)候出現(xiàn)了問題纯露,無意中在還沒commit的時(shí)候調(diào)用了方法
git reset --hard FETCH_HEAD
瞬間文件全部丟失
找回
按照git的標(biāo)準(zhǔn)邏輯悦污,如果我們commit后可以使用命令
git reflog
來找到我們的提交記錄,例如:
我們可以使用:
git reset --hard 97c4b00c
重新找回我們的版本退子!但是不幸的是我們并沒有進(jìn)行commit所以是沒有記錄的岖妄!我當(dāng)時(shí)是添加到暫存區(qū)后使用git reset后被覆蓋到!所以必須使用其他的方法
使用 git add 添加到了暫存區(qū)然后被 git reset 覆蓋
我們使用命令
find ~/.git/objects -type f | xargs ls -lt | sed 10q
這里的 10q 指的就是你最近添加的 10 條 add 的記錄絮供,根據(jù)你丟失文件的多少進(jìn)行選擇衣吠。然后出現(xiàn)的信息如下:
這里就是你add后的文件記錄茶敏,單條記錄就是一個(gè)文件
我們可以使用命令:
git cat-file -p f6fc3b8ce768b4c58ac44c7a6f45489cba95497d
會將 add 中的文件重新寫到新文件中壤靶,進(jìn)行恢復(fù)。
此外惊搏,還有一種方法進(jìn)行恢復(fù)贮乳。執(zhí)行:
git fsck --lost-found
然后去到 .git/lost-found 目錄下面可以找到自己已經(jīng)丟失的文件。文件不會是原來的名字恬惯,需要自己打開去查看和對比向拆。
查看這些文件顯示出來的是經(jīng)過了哈希算法的亂碼顯示的!
這寫文件我們可以按照導(dǎo)出來使用命令的方式重新構(gòu)建成一個(gè)文件酪耳,然后放到我們相應(yīng)的編譯器的位置中去浓恳,這樣就算數(shù)據(jù)找回了
最后
謹(jǐn)慎使用 git reset --hard