提交

时间:2015-06-12 17:43:30

标签: git git-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

6 个答案:

答案 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存储库上的权限

  

在允许我的用户名访问所提及的路径后,一切正常。