git:新建文件未先add直接commit,提交后,新增文件丢失问题
  HvTJUzsxOBtS 2023年11月19日 25 0


第一种方法:

  1. 执行 git fsck --lost-found
  2. 进入.git文件夹中,保险起见,拷贝lost-found/other 文件夹到其他任意位置;
  3. 查看拷贝文件夹中的文件内容,将其重命名为之前名称(文件名字无法找回,只能手动重命名,图片等文件直接重命名即可),放回之前路径下。

第二种方法:

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

git:新建文件未先add直接commit,提交后,新增文件丢失问题_重命名

提取 object/ 后面的值,第一个/要去掉。例如第一个是 79dcf6cb091817f990c75cadd1a2de8816f19613
然后一次次的执行 git show 79dcf6cb091817f990c75cadd1a2de8816f19613 > 2.png,查看文件内容是否是丢失的。

这种方式效率太低。

三、 find .git/objects -type f | xargs ls -lt | sed 30q > file.txt

git:新建文件未先add直接commit,提交后,新增文件丢失问题_重命名_02

然后多光标操作,每一行只留下id。

git:新建文件未先add直接commit,提交后,新增文件丢失问题_sed_03

 

然后创建脚本,并执行:

注:需要先创建空文件夹files,否则会报找不到files文件夹导致写入失败

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

 执行:

sh build.sh

 最后,手动还原,点进去每一个文件,有些可能是一些空文件,有一些正好是你丢失的文件,需要自己手动加回到正确的位置。


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月19日 0

暂无评论

推荐阅读
HvTJUzsxOBtS