gitgit-commit

Couldn't set refs/heads/master when commit


I was able to commit fine yesterday. But today (I didn't change anything), when I 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

I know that this error may happen also during pull or push. But I haven't found a solution to fix it when committing.

My .git/config file looks like this:

[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

Solution

  • It seems you have lost your HEAD, so you will have to recreate it. You can do that using this.

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

    This will create a HEAD file in your .git folder. That should solve your problem.

    Also, try the git fsck command. It verifies the connectivity and validity of the objects in the database.

    git fsck --lost-found
    

    Use this to scan for unreachable objects. It will write dangling objects into .git/lost-found/commit/ or .git/lost-found/other/, depending on type. If the object is a blob, the contents are written into the file, rather than its object name.