Git找回丢失代码

2023-08-09  本文已影响0人  大大东

git丢失分为以下几种情况

  1. 分支、commit丢失
    这个比较简单,基于 git reflog拿到对应操作的hash即可找回
  2. 代码进过暂存区(即 git add过 ),也就是说被git管理过
    这个是本篇的重点,以前我一直以为是找不回来的,后来网上看到方案成功找回
  3. 代码仅在工作区,从没被git管理过
    无法找回 (如有方案 请告知 😆)

记录下我遇到的上述第2种情况:
新建了1个代码文件xxx.swift, 由于各种原因,被reset掉了,然后有进行了git pull --reb拉代码操作。

首先执行下列命令,列出最近的150个改动文件,可以根据自己大概变动的文件数设置相应的值。

find .git/objects -type f | xargs ls -lt | sed 150q 

控制台打印出如下:

image.png
全部拷贝出来,使用多行光标编辑,选出红框标出内容,.pack/.index后缀的我都删除了,然后删除每行里面的/, 得到了如下文件保存为file.txt放在git仓库根目录
image.png

然后创建一个shell脚本也放在git仓库根目录,

#!/bin/bash

mkdir files

for line in `cat ./file.txt`
do
        echo "File:${line}"
        git show ${line} > ./files/${line}.txt
done

执行脚本导出文件, 逐个预览找到丢失的代码文件即可

image.png
上一篇下一篇

猜你喜欢

热点阅读