場景
代碼正在開發中不想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即可