git丟失分為以下幾種情況
- 分支恬惯、commit丟失
這個比較簡單荆永,基于git reflog
拿到對應操作的hash即可找回 - 代碼進過暫存區(qū)(即
git add
過 )召耘,也就是說被git管理過 (本篇遇到的場景)
以前我一直以為是找不回來的鹤盒,后來網上看到方案成功找回 - 代碼僅在工作區(qū)蚕脏,從沒被git管理過
無法找回 (如有方案 請告知 ??)
背景:
新建了1個代碼文件xxx.swift
, 由于各種原因,被reset
掉了侦锯,然后又進行了git pull --reb
拉代碼操作驼鞭。
找回:
首先執(zhí)行下列命令,列出最近的150個改動文件尺碰,可以根據(jù)自己大概變動的文件數(shù)設置相應的值挣棕。
find .git/objects -type f | xargs ls -lt | sed 150q
控制臺打印出如下:
全部拷貝出來,使用多行光標編輯亲桥,選出紅框標出內容洛心,
.pack/.index
后綴的我都刪除了,然后刪除每行里面的
/
,得到了如下文件保存為
file.txt
放在git倉庫根目錄然后創(chuàng)建一個shell腳本也放在git倉庫根目錄,
#!/bin/bash
mkdir files
for line in `cat ./file.txt`
do
echo "File:${line}"
git show ${line} > ./files/${line}.txt
done
執(zhí)行腳本導出文件, 逐個預覽找到丟失的代碼文件即可