美文网首页
Git找回丢失代码

Git找回丢失代码

作者: 大大东 | 来源:发表于2023-08-09 16:45 被阅读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

    相关文章

      网友评论

          本文标题:Git找回丢失代码

          本文链接:https://www.haomeiwen.com/subject/ejfapdtx.html