Git: warning: refname 'master' is ambiguous

For future reference, I had the same issue and what ended up to work for me was the solution described here. Basically, when you get Git: warning: refname 'xxx' is ambiguous warning, you can use: git show-ref xxx to check the references to xxx branch and validate which ones are having conflict.

In my scenario, it was a tag named xxx and branch name with the same name. The tag had been made by mistake and was removed from server so all I needed to do was to update my local tag to match the server: git fetch -p -P. This command is explained in details here


For me I tracked down the source of this warning to much earlier when I incorrectly issued an "update-ref" command. If you forget to specify the full refs/heads/mybranchname path in the first arg, then a file .git/mybranchname gets created, which later leads to this warning when you try to switch to that branch.

It is solved by simply deleting the .git/mybranchname, eg:

rm .git/master

And for reference, the correct form for the update-ref command is:

git update-ref refs/heads/mybranchname mytargetbranch

Don't forget the "refs/heads" part!

Also, my most common use-case for update-ref is simply manually moving a branch to point to another commit, which I've found a simpler syntax to do:

git branch -f myBranchToMove destinationBranchOrHash

This syntax is easier for me because it doesn't require that error-prone refs/heads path qualifier.


I had a similar problem (not master) when I created a branch with the same name as a tag.

This helped me remove the tag https://stackoverflow.com/a/5480292/150953

git push --delete origin tagname

As detailed in "Git: refname 'master' is ambiguous", that means that, beside heads/master, you have another master in one of the following namespace within the git repo:

refs/<refname> 
refs/tags/<refname>
refs/heads/<refname>
refs/remotes/<refname>
refs/remotes/<refname>/HEAD

Or even ./<refname>, as mentioned in Magnus's answer.

Tags:

Git