點擊這里的怕是都和我一樣經歷了失去代碼的心碎。
我的經歷是和同事在同一分支下開發,在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了!