Git 无法锁定引用 'HEAD': 无法解析引用 HEAD
Git cannot lock ref 'HEAD': unable to resolve reference HEAD
我正在尝试将更改提交到我的存储库,但我收到以下错误:
git -c diff.mnemonicprefix=false -c core.quotepath=false commit -q -F C:\Users\Contronym\AppData\Local\Temp\bkdweixb.mnu
fatal: cannot lock ref 'HEAD': unable to resolve reference HEAD: Invalid argument
Completed with errors, see above.
我正在使用 bitbucket 和 SourceTree。
这次提交失败的原因是什么?在过去的一周里,我能够很好地提交最后 3 次提交。然后,突然之间,我收到了这个错误。
编辑
I 运行 git gc
结果如下:
$ git gc
error: bad ref for HEAD
error: bad ref for HEAD
error: inflate: data stream error (unknown compression method)
fatal: loose object 53b65bd9b4fec7f6a7b0b3313c68199a18804327 (stored in .git/objects/53/b65bd9b4fec7f6a7b0b3313c68199a18804327) is corrupt
error: failed to run repack
我检查了目录 .git/objects/53/b65bd9b4fec7f6a7b0b3313c68199a18804327
但它不存在。那里还有另外两个文件,但 b65bd9b4fec7f6a7b0b3313c68199a18804327
不存在。
我也遇到了同样的问题。我刚刚使用了命令:
git reset
比我删除文件/my_project_directory/./git/refs/heads/master
然后我可以使用这个命令:
git reset --hard <my_hash_of_last_commit_on_remote_branch>
为我工作,进入终端输入:(根据您的需求分支 lul)
echo ref: refs/heads/master >.git/HEAD
我遇到了同样的问题,我找到的唯一解决方案是像这样导航到头部:
.git/refs/heads/branch_name
并且我删除了头文件。然后我去了控制台,我使用了命令:
git reset
然后所有文件都未暂存,因此添加它们并在之后提交它们。
在使用工作副本中的 root 用户调用 git 命令后,我遇到了同样的问题。所以.git/下各种文件的属主和属主组都改为"root"。
当我切换回我的用户帐户时,由于缺少权限,git 无法再处理这些文件。
使用
重置权限后,它再次工作
sudo chown -R [MY_USER]:[MY_GROUP] .git
我遇到了同样的问题,这对我有用:
步骤 1.
- 转到
.git\logs\refs\heads
并打开名为 YOUR_BRANCH
的文档,现在复制您的用户名和电子邮件前面的 ID
数字
第 2 步
- 转到
.git\refs\heads
并打开名为 YOUR_BRANCH
的文档,删除该行并将 ID
粘贴到
当我 运行 进入这个项目时,我只是 git 将项目克隆到一个新的文件目录中,然后从 .git\refs\heads
中拉出 heads 文件夹并替换原来的 heads 文件您遇到问题的目录。然后只需删除您创建的新克隆(因为它显然没有您尝试推送的更新)。
如果您不介意丢失您的历史记录,您可以删除.git
文件然后:
git init
这将重新初始化您的存储库,然后您可以从那里继续。
这就是解决我的问题的方法:
rm -rf .git/refs/heads/
导航到目录 .git/refs/heads/branch_name
删除首选分支名称
打开终端(git bash or cmd for windows)
git 重置
提交更改(如有必要)
运行合并远程仓库分支的命令如下
git pull
如果给出相关拒绝合并不相关历史,运行在终端中输入以下命令:
git pull origin master --allow-unrelated-histories
我遇到了这个问题,我使用了这个命令:
git reset
删除文件.git/ORIG_HEAD
然后再次拉取。对我来说,.git/ORIG_HEAD
文件是 0 字节并且具有 .lock
扩展名而不是它应该包含的 git 引用,所以我只是摆脱了它。
我今天遇到了同样的问题。
我找到了解决此问题的非常简单的解决方法,但需要权衡取舍。
我仍然不确定最初是什么原因造成的。
我遇到了很多解决方案,不幸的是,没有一个对我有用。
我无法在此错误期间初始化 GitHub 存储库,这实际上帮助我找到了解决方案。
显然,只需删除 .git 目录即可解决很多问题。就在我删除该目录时,我能够初始化一个回购协议。
您将在工作区中找到 .git 文件夹。
.git(目录)/配置(文件)。配置文件可能已损坏,可能是问题的根源。 (我不确定原因,任何外行的解释将不胜感激)
当我删除文件夹时,所有错误都消失了。我还能够从 GitHub 桌面提交(这会抛出错误,之前,直接从 IDE 提交时也会出现同样的错误)
唯一的缺点是,您所有的阶段性更改可能会丢失,仅此而已。而且您可能必须初始化一个新的回购协议,因为提供相同的名称会引发错误(如果相同的回购协议已经存在)
因此,除此之外,您应该可以开始了。您现在也可以提交更改。
再次克隆项目,安装模块并签出到您的分支。它将恢复状态。
删除您的 .git
文件夹
git init
git remote add origin url
git commit -m 'msg'
git push origin dev
我正在尝试将更改提交到我的存储库,但我收到以下错误:
git -c diff.mnemonicprefix=false -c core.quotepath=false commit -q -F C:\Users\Contronym\AppData\Local\Temp\bkdweixb.mnu
fatal: cannot lock ref 'HEAD': unable to resolve reference HEAD: Invalid argument
Completed with errors, see above.
我正在使用 bitbucket 和 SourceTree。
这次提交失败的原因是什么?在过去的一周里,我能够很好地提交最后 3 次提交。然后,突然之间,我收到了这个错误。
编辑
I 运行 git gc
结果如下:
$ git gc
error: bad ref for HEAD
error: bad ref for HEAD
error: inflate: data stream error (unknown compression method)
fatal: loose object 53b65bd9b4fec7f6a7b0b3313c68199a18804327 (stored in .git/objects/53/b65bd9b4fec7f6a7b0b3313c68199a18804327) is corrupt
error: failed to run repack
我检查了目录 .git/objects/53/b65bd9b4fec7f6a7b0b3313c68199a18804327
但它不存在。那里还有另外两个文件,但 b65bd9b4fec7f6a7b0b3313c68199a18804327
不存在。
我也遇到了同样的问题。我刚刚使用了命令:
git reset
比我删除文件/my_project_directory/./git/refs/heads/master
然后我可以使用这个命令:
git reset --hard <my_hash_of_last_commit_on_remote_branch>
为我工作,进入终端输入:(根据您的需求分支 lul)
echo ref: refs/heads/master >.git/HEAD
我遇到了同样的问题,我找到的唯一解决方案是像这样导航到头部:
.git/refs/heads/branch_name
并且我删除了头文件。然后我去了控制台,我使用了命令:
git reset
然后所有文件都未暂存,因此添加它们并在之后提交它们。
在使用工作副本中的 root 用户调用 git 命令后,我遇到了同样的问题。所以.git/下各种文件的属主和属主组都改为"root"。
当我切换回我的用户帐户时,由于缺少权限,git 无法再处理这些文件。
使用
重置权限后,它再次工作sudo chown -R [MY_USER]:[MY_GROUP] .git
我遇到了同样的问题,这对我有用:
步骤 1.
- 转到
.git\logs\refs\heads
并打开名为YOUR_BRANCH
的文档,现在复制您的用户名和电子邮件前面的ID
数字
第 2 步
- 转到
.git\refs\heads
并打开名为YOUR_BRANCH
的文档,删除该行并将ID
粘贴到
当我 运行 进入这个项目时,我只是 git 将项目克隆到一个新的文件目录中,然后从 .git\refs\heads
中拉出 heads 文件夹并替换原来的 heads 文件您遇到问题的目录。然后只需删除您创建的新克隆(因为它显然没有您尝试推送的更新)。
如果您不介意丢失您的历史记录,您可以删除.git
文件然后:
git init
这将重新初始化您的存储库,然后您可以从那里继续。
这就是解决我的问题的方法:
rm -rf .git/refs/heads/
导航到目录
.git/refs/heads/branch_name
删除首选分支名称
打开终端(git bash or cmd for windows)
git 重置
提交更改(如有必要)
运行合并远程仓库分支的命令如下
git pull
如果给出相关拒绝合并不相关历史,运行在终端中输入以下命令:
git pull origin master --allow-unrelated-histories
我遇到了这个问题,我使用了这个命令:
git reset
删除文件.git/ORIG_HEAD
然后再次拉取。对我来说,.git/ORIG_HEAD
文件是 0 字节并且具有 .lock
扩展名而不是它应该包含的 git 引用,所以我只是摆脱了它。
我今天遇到了同样的问题。 我找到了解决此问题的非常简单的解决方法,但需要权衡取舍。 我仍然不确定最初是什么原因造成的。 我遇到了很多解决方案,不幸的是,没有一个对我有用。
我无法在此错误期间初始化 GitHub 存储库,这实际上帮助我找到了解决方案。 显然,只需删除 .git 目录即可解决很多问题。就在我删除该目录时,我能够初始化一个回购协议。 您将在工作区中找到 .git 文件夹。 .git(目录)/配置(文件)。配置文件可能已损坏,可能是问题的根源。 (我不确定原因,任何外行的解释将不胜感激)
当我删除文件夹时,所有错误都消失了。我还能够从 GitHub 桌面提交(这会抛出错误,之前,直接从 IDE 提交时也会出现同样的错误)
唯一的缺点是,您所有的阶段性更改可能会丢失,仅此而已。而且您可能必须初始化一个新的回购协议,因为提供相同的名称会引发错误(如果相同的回购协议已经存在)
因此,除此之外,您应该可以开始了。您现在也可以提交更改。
再次克隆项目,安装模块并签出到您的分支。它将恢复状态。
删除您的
.git
文件夹
git init
git remote add origin url
git commit -m 'msg'
git push origin dev