如果你的代码git add过就还有救~~~~
Another git process seems to be running in this repository, e.g.
an editor opened by ‘git commit‘. Please make sure all processes
are terminated then try again. If it still fails, a git process
may have crashed in this repository earlier:
remove the file manually to continue.
解决办法:
rm -f ./.git/index.lock
方法二:git fsck > files.txt 直接写到文件中, 需要处理一下,只保留后面的字符串
tips:cmd+f2(mac 的f2是 fn+2) 可以多光标同时操作,很方便
方法三:find .git/objects -type f | xargs ls -lt | sed 60q查看最近60次add的文件
会直接打印出来,需要提取的是object/后面的值,第一个‘/’要去掉。例如第一个是43442c51e7c70e38eeedd9cfa82a1546271e0155
第二步: 通过git show 导出文件
一个一个的看可以用这个命令
git cat-file -p 0a2a25fd02e7baaf988b720df7c1cb8a7ea4729d > history.txt
可以写一个shell脚本
#!/bin/bash
for line in `cat files.txt`
do
echo "File:${line}"
git show ${line} > files/${line}.txt
done
第三步:手动复原想要的文件
点进去,有些可能是一些空文件,有一些正好是你丢失的文件,需要自己手动加回到正确的位置。前后找方法花了我三个小时的时间,但总比重新写一遍来的快。(这次丢的代码可是拆分了五六个组件来着,涉及到的文件修改超级多,心里默念,遇到凡事不要慌~~~
原文:https://www.cnblogs.com/cuncunjun/p/12623006.html