前两天git上传代码,不小心将1个多G的模型文件也全部commit了,结果push不成也恢复不了代码。找了好久终于找到了解决方法。
进到仓库目录,启动git bash,依次执行下列命令。
查看pack文件名:
$ ls -l .git/objects/pack/
移出pack文件到当前目录(命令行最后有个点):
$ mv
.git/objects/pack/pack-d4da3e51cfa0c0650e2b3b663d71bb1f8ce4d825.pack .
展开pack文件(会自动展开在.git/objects/目录下):
$ git unpack-objects <
pack-d4da3e51cfa0c0650e2b3b663d71bb1f8ce4d825.pack
回到上一层创建一个recovery目录:
$ mkdir -p …/recovery
把git 库里的 git objects 全部解压到 recovery 目录:
$ find .git/objects/ | while read f; do printf
“\x1f\x8b\x08\x00\x00\x00\x00\x00” | cat - f ∣ g u n z i p 2 > / d e v / n u l l ∣ s e d − z 1 d > . . / r e c o v e r y / f | gunzip 2>/dev/null | sed -z 1d > ../recovery/ f∣gunzip2>/dev/null∣sed−z1d>../recovery/(echo $f | cut -s -d/ -f3,4
–output-delimiter="") 2>/dev/null; done
文件已经全部恢复至 recovery目录,但丢失文件名。
可以用Notepad++ 等代码编辑查看器逐个查看筛选。或者
$ grep ‘review-comment-’ -r …/recovery/
根据代码片段搜索位置,其中review-comment-是具体代码片段。
详细解释可看—>摘自:https://ring0.me/2015/05/recover-code-from-corrupt-git-repo/
发布于:2019年11月9日 @ 20:38 ailulu.tech