git stash drop 誤用恢復

場景

代碼正在開發中不想commit,但是要切換其它分支去處理臨時緊急任務,於是git stash 備份當前的工作區的內容。
切換回來時不小心使用了:git stash drop ,於是暫存的修改全部沒有了。

 

方法一  知道刪除的ID號

知道刪除的ID號如

然後通過命令git fsck –lost-found找到最近的一些刪除的提交,找到f3106e*,然後git show f3106e*查看修改情況,git stash apply f3106e*即可修復刪除掉的內容了。

 

方法二  不知道刪除的ID號但是大概記得自己修改了哪些內容


step1 內容存入文件

git fsck --lost-found >> 1.txt
或
git fsck --unreachable >> 2.txt 

然後兩個文件的內容格式如下

step2 篩選指定信息並記住ID,創建腳本快速查找

#!/bin/sh
READFILENAME="1.txt"      #上步文件名【1.txt dangling commit,2.txt對應unreachable commit】
RETFILENAME="./ret.txt"   #篩選結果文件名
while read -r line       
do 	
    VAR=`echo $line | awk '/dangling commit/ {print $3}'`
    if [ $VAR ]; then
        git show $VAR >> $RETFILENAME    
        echo "-------------------------------------\n" >>$RETFILENAME #每條記錄用---分割開
    fi
done < $READFILENAME

step3 根據結果找回刪除的代碼

如我刪除的是commit 8a6229188074d5ce270ac4405179323d7c01b78e

然後 git stash apply 8a6229188074d5ce270ac4405179323d7c01b78e即可

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