git reset --hard後的本地代碼找回(commit和沒有commit但add了兩種情況)

        作爲一個git的小白,今天踩了個大坑(大哭),踩坑過程如下,想看解決辦法的直接跳過,看第二部分:

踩坑過程:

        1. 程序調試通過,開開心心commit,中間提示有代碼檢查錯誤,三個選項commit、concel、view(intellij idea編譯器),點了view(劃重點:因爲選擇的查看view,因此並沒有commit成功。坑就是這時候挖的)。

        2.  view之後發現沒啥大事,準備push。push的時候發現有一些不是我commit的東西(其實你壓根沒commit成功,當然不是你的變更啊啊啊!),誤以爲提交錯了,打算撤回commit操作(路線完全跑偏)

        3. 執行 git reset --hard commid_id (就是這個壞滅性操作

        這個命令是強制回退到某一次歷史commit的版本,並清除本地修改!

        再次很瞎的 在 git log 中撈了一次歷史commit的版本號(其實仔細看時間會發現根本不是自己以爲的那次commitid的),進行了回退。然後就發現本地代碼全沒了。。。

 

解決辦法:

一、沒有commit,沒有add

對不起,找不回了,放棄吧。

二、沒有commit,但是有add操作

執行:git fsck --lost-found

在項目git目錄下的 /.git/lost-found/other裏有你add過的文件。挨個看看,能救回來多少是多少吧。

再附送一個命令:find .git/objects -type f | xargs ls -lt | sed 60q

找回本地倉庫裏邊最近add的60個文件。找回思路同上。

三、執行過commit

好吧,你很幸運。

執行 git  reflog

會有類似下面的東西,挑你想回退的地方,一般是那次commit之前的head,例如 HEAD@{7}

執行 git reset --hard HEAD@{7} 

心得:執行網上查的命令要當心啊,執行不懂的命令要當心啊啊啊啊

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章