提交时无法设置 refs/heads/master
Couldn't set refs/heads/master when commit
我昨天能够很好地提交。但是今天(我没有改变任何东西),当我提交时:
$ 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
您的 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,则将内容写入文件,而不是其对象名称。
检查您的 .git 文件夹中的文件 HEAD。
$ cat .git/HEAD
ref: refs/heads/master
如果不存在,请创建它。
$ echo "ref: refs/Heads/master" > .git/HEAD
这可能对其他人有帮助;我等了大约一分钟,然后简单地重试了提交,然后……成功了。
在我的例子中,问题是 对服务器 上的 GIT 存储库的权限 refs/Heads/master
。
After allowing my username for accessing the mentioned path, all worked well.
当我有 2 个 VS Code 副本时,我遇到了这个问题 (fatal: couldn't set 'refs/heads/my-branch'
),每个副本都有集成终端检出到同一个提交。除了一个版本的 VS Code 处于 WSL(Windows 子系统 Linux)模式。我关闭了 WSL VS Code,并立即能够在香草 non-WSL VS Code 中提交。
对我来说,需要 Windows 重启才能让它再次工作:-)))
就我而言,在我的 .git
文件夹中,有文件 HEAD
,它无法将 HEAD.lock
重命名为 HEAD
(即使它没有不要告诉我)。我删除了 HEAD
文件,它可以正常工作。
(我也用过 TortoiseGit,不知道有没有关系)
我昨天能够很好地提交。但是今天(我没有改变任何东西),当我提交时:
$ 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
您的 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,则将内容写入文件,而不是其对象名称。
检查您的 .git 文件夹中的文件 HEAD。
$ cat .git/HEAD
ref: refs/heads/master
如果不存在,请创建它。
$ echo "ref: refs/Heads/master" > .git/HEAD
这可能对其他人有帮助;我等了大约一分钟,然后简单地重试了提交,然后……成功了。
在我的例子中,问题是 对服务器 上的 GIT 存储库的权限 refs/Heads/master
。
After allowing my username for accessing the mentioned path, all worked well.
当我有 2 个 VS Code 副本时,我遇到了这个问题 (fatal: couldn't set 'refs/heads/my-branch'
),每个副本都有集成终端检出到同一个提交。除了一个版本的 VS Code 处于 WSL(Windows 子系统 Linux)模式。我关闭了 WSL VS Code,并立即能够在香草 non-WSL VS Code 中提交。
对我来说,需要 Windows 重启才能让它再次工作:-)))
就我而言,在我的 .git
文件夹中,有文件 HEAD
,它无法将 HEAD.lock
重命名为 HEAD
(即使它没有不要告诉我)。我删除了 HEAD
文件,它可以正常工作。
(我也用过 TortoiseGit,不知道有没有关系)