誤用git reset -hard 的慘痛經歷


誤用git reset -hard 的檢討書

消失的代碼們:

我知道你們可能看不到了,但是我還是需要自我反省自己,因為自己的誤操作,導致了你們的消失。

事情的始末

夜闌人靜,周圍除了少年敲擊鍵盤的聲音,就再也聽不到其他聲響,他伸了伸懶腰,滿意的看着眼前的Android Studio中自己奮斗了1個小時的成果,熟練的按下了git commit,正要起身離開。
AS報了錯誤:

Pull is not possible because you have unmerged files

少年輕蔑的笑了,隨即打開Chrome輸入了那段報錯提示,困意襲來,出現的第一個搜索結果讓他毫不猶豫的點了進去,少年快速的滑動文章,直接找到了解決代碼部分:

復制,轉到AndroidStudio >Terminal > 輸入 >回車 ,一氣呵成。

然而他再也笑不出來,眼前的項目已變回上一次自己 **git pull ** 的樣子,之間自己沒有過 commit 除了 Android Studio 自動的 add ,自己辛苦一小時的成果連個影子都已看不到。腦袋"轟"的一下,困意全無。

慌亂的打開瀏覽器,查找着解決辦法,不放過任何一個可能的機會,但是他又錯了,又是看到任何一個救命稻草就拼命抓住,多經過多次嘗試,最終,少年找到了解決辦法。

少年這會仔細的閱讀了文章,加上前面幾次的嘗試未果的經驗,很快就理解並再次敲起了鍵盤:

     git fsck --lost-found

他知道,這個命令並不會讓他的項目馬上發生變化,幾乎是同一時間,Terminal輸出了這樣一段代碼:

Terminal告訴少年,丟失的文件已經幫他找回來,放在了lost-found文件夾下

確認過眼神,這確實是丟失的文件,只是文件名已看不出樣子,內容是源碼,遺憾的是,大概之前嘗試的命令混亂,lost-found下的文件內容不是最新的,大概是創建文件后短暫的時間,並且不是新建的文件的修改內容已經找不到,還是得自己重新寫。

反思

  • 查找問題時不應該不看文章內容
  • 使用一個命令應該先了解其作用
  • 遇到問題不能亂,需冷靜思考

總結

git reset -hard的恢復辦法總的來說分為3個情況:

已commit 未commit但有add 未commit未add
git reflog 獲取hash值
git reset --hard [對應的值]
git fsck --lost-found 恢復刪除文件
到.git/lost-found目錄尋找文件
神仙難救


免責聲明!

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



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