Another issue with git 1.8:
$ git push
error: dst ref refs/heads/master receives from more than one src.
error: failed to push some refs to \'gitosis@xxx.xx:xxx.
Another way to get this error is if you accidentally type in the name of the branch you are trying to push twice, i.e.:
git push master otherBranch master moreBranches
Yields this error. Fix is obvious once you're aware you've done it:
git push master otherBranch moreBranches
Following what is explained in this git old patch (2007!)
Some refs go stale, e.g. when the forkee rebased and lost some objects needed by the fork.
The quick & dirty way to deal with those refs is to delete them and push them again.However,
git-push
first would first fetch the current commit name for the ref, would receive a null sha1 since the ref does not point to a valid object, then tellreceive-pack
that it should delete the ref with this commit name.
delete_ref()
would be subsequently be called, and check thatresolve_ref()
(which does not check for validity of the object) returns the same commit name. Which would fail.
refs/heads/refs/heads/master
looks like a branch improperly named "refs/heads/master" (using namespaces for defining hierachical branch name), and points to nothing.
Deleting it was the right move.
It looks like you have an extra copy of your refs
tree within refs/remotes/origin
. Notice how within refs/remotes/origin
, you have an extra refs
directory? I don't know how this got there, but it's probably what is causing your problems. Due to the way Git handles abbreviations of refs (allowing you to drop the prefix, using only the suffix like origin/master
), it is probably getting confused by having both refs/remotes/origin/master
and refs/remotes/refs/remotes/origin/master
.
I don't know how it got into this state; possibly a bug in a Git tool, possibly a typo that you made at some point. You fixed half of the problem by deleting the remote branch that was tracking this duplicate branch. I would be willing to bet you can fix the other half of the problem, and be able to do git push
again, if you delete the refs/remotes/origin/refs
directory.
In my case I had a tag with same name as the branch name. rename branch name and works.
in my case I had a space in branch name:
git push origin 353-applyPermissions :353-applyPermissions
returns > error: dst ref refs/heads/353-applyPermissions receives from more than one src. but this one works:
git push origin 353-applyPermissions:353-applyPermissions