使用Git拉取代码时显示reference broken错误,如何解决?

表现

在windows上使用TortoiseGit、或者在Linux上使用Git命令,对一个项目拉取代码时,会提示reference broken错误。以下为TortoiseGit的日志:

git.exe fetch --progress -v "origin" master
Server refused to set environment variables
From github.com:HorseLuke/AlibabaSDK
* branch            master     -> FETCH_HEAD
error: cannot lock ref 'refs/remotes/origin/master': unable to resolve reference 'refs/remotes/origin/master': reference broken
! [new branch]      master     -> origin/master  (unable to update local ref)


git did not exit cleanly (exit code 1) (797 ms @ 2021-03-05 22:08:33)

原因

项目中的.git目录,其用于保存指向commit对象的指针文件丢失或者损坏。这些文件一般存放在“【项目目录】/.git/refs/remotes/origin”下。

解决方法

1、删除“【项目目录】/.git/refs/remotes/origin”下的所有文件,删除前注意备份。

Linux下可运行如下命令进行删除(没有用 -f,是为了仔细确认):

rm 【项目目录】/.git/refs/remotes/origin/*.*

2、重新运行一次拉取命令。这其中:

2.1、在TortoiseGit中,就是右键菜单选择Git Sync后,再点Pull。

2.2、在Linux下,则是直接运行如下命令:

git fetch --all

本页永久链接:https://www.orztip.com/?p=457&article_title=git-error-reference-broken-or-unable-to-resolve-reference