使用IDEA提交项目的时候突然断电,重启后项目 git 损坏,所有文件变成了 untracked,IDEA 界面上表示为所有文件名变成绿色,并且无法 pull (也可能是无法 push)

提示 Git Pull Failed
From http://*****************
* branch dev -> FETCH_HEAD
cannot lock ref ‘refs/remotes/origin/dev’: unable to resolve reference ‘refs/remotes/origin/dev’: reference broken
! [new branch] dev -> origin/dev (unable to update local ref)

在网上找了半天方法,都比较复杂,而且没有使用 IDEA 的例子。最后结合项目实际情况,解决了问题。总体来说比较简单,解决方案记录如下。

1. 找到自己项目下的隐藏目录 \.git\logs\refs\heads,选择自己对应的分支

2. 打开文件后,找到最后一次 commit 记录,复制 hash。注意,是复制后面那一串。

3. 进入文件夹.git\refs\heads,找到对应的分支

这时文件内容应该是空的。把刚才复制的 hash 粘贴进去。

4. 进入.git\refs\remotes\origin,找到分支,清空后把刚才的 hash 同样粘贴进去。

5. 重新 pull 项目,问题解决。