提交时无法设置 refs/heads/master

问题描述 投票:0回答:8

我昨天表现得很好。但今天(我没有改变任何东西),当我承诺时:

$ git add config.h
$ git commit -m "Update config.h to reset the values"
error: Couldn't set refs/heads/master
fatal: cannot update HEAD ref

我知道这个错误也可能在拉或推期间发生。但我在提交时还没有找到修复它的解决方案。

我的 .git/config 文件如下所示:

[core]
    repositoryformatversion = 0
    filemode = false
    bare = false
    logallrefupdates = true
    symlinks = false
    ignorecase = true
    hideDotFiles = dotGitOnly
[remote "origin"]
    url = git@SOME_URL
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
git git-commit
8个回答
18
投票

您似乎丢失了

HEAD
,因此您必须重新创建它。你可以用这个来做到这一点。

echo ref: refs/heads/master >.git/HEAD

这将在您的 .git 文件夹中创建一个

HEAD
文件。这应该可以解决你的问题。

另外,请尝试使用

git fsck
命令。它验证数据库中对象的连接性和有效性。

git fsck --lost-found

用它来扫描无法到达的对象。它将根据类型将悬挂对象写入

.git/lost-found/commit/
.git/lost-found/other/
。如果对象是 blob,则内容将写入文件,而不是其对象名称。


11
投票

当我有 2 个 VS Code 副本时,我遇到了这个问题 (

fatal: couldn't set 'refs/heads/my-branch'
),每个副本都有集成终端签出到相同的提交。除了 VS Code 的一个版本处于 WSL(适用于 Linux 的 Windows 子系统)模式之外。我关闭了 WSL VS Code,并立即能够在普通的非 WSL VS Code 中提交。


5
投票

这可能对其他人有帮助;我等了大约一分钟,只是重试了提交,然后……它成功了。


2
投票

就我而言,问题在于路径refs/Heads/master的服务器上GIT存储库的权限。


允许我的用户名访问上述路径后,一切正常。


2
投票


1
投票

$ cat .git/HEAD ref: refs/heads/master

如果不存在,请创建它。

$ echo "ref: refs/Heads/master" > .git/HEAD



0
投票
.git

文件夹中,有文件

HEAD
,并且它无法将
HEAD.lock
重命名为
HEAD
(即使它没有告诉我)。我删除了
HEAD
文件,它能够正常工作。
(我也在使用TortoiseGit;不知道这是否有什么关系)


0
投票
搁置您的更改;
  1. 删除本地分支;
  2. 再次结帐分支;
  3. 取消搁置更改;
  4. 提交并推送您的更改。
© www.soinside.com 2019 - 2024. All rights reserved.