我昨天能够罚款。但是今天(我没有改变任何事情),当我承诺:
$ 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
答案 0 :(得分:9)
您似乎丢失了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,则将内容写入文件,而不是其对象名称。
答案 1 :(得分:2)
这可能对其他人有帮助;我等了大约一分钟,然后简单地重试了提交......它运作了。
答案 2 :(得分:2)
当我有2份VS Code副本时,都遇到了这个问题(fatal: couldn't set 'refs/heads/my-branch'
),每份副本都带有集成终端,签出到同一提交。除了一个版本的VS Code处于WSL(Linux的Windows子系统)模式。我关闭了WSL VS代码,然后立即能够提交普通的非WSL VS代码。
答案 3 :(得分:1)
对我来说,它需要重新启动 Windows 才能再次运行:-)))
答案 4 :(得分:0)
检查.git文件夹中的文件HEAD。
$ cat .git/HEAD
ref: refs/heads/master
如果不存在,请创建它。
$ echo "ref: refs/Heads/master" > .git/HEAD
答案 5 :(得分:0)
在我的情况下,问题在于服务器路径上的refs/Heads/master
的服务器上GIT存储库上的权限。
在允许我的用户名访问所提及的路径后,一切正常。