恢復git reset --hard origin/master操作后丟失的代碼


點擊這里的怕是都和我一樣經歷了失去代碼的心碎。

我的經歷是和同事在同一分支下開發,在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了!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM