Reputation: 3866
I'm trying to push a new local branch product-0.2
to remote where there is already a tag with the same name (but the branch itself does not exist)
git push -v --tags --set-upstream origin product-0.2:product-0.2
Pushing to https://****@github.com/mycompany/product.git
error: src refspec product-0.2 matches more than one.
error: failed to push some refs to 'https://****@github.com/mycompany/product.git'
Same with:
git push origin product-0.2:/refs/heads/product-0.2
Although the other way around it works, e.g. create a branch product-0.1
, commit on it then apply a tag product-0.1
.
Some people work around this by removing the conflicting tag locally, then push the branch, then retrieve the remote tag, but it seems cumbersome and error prone.
How can I create my branch with minimal fuss?
Thanks for your input
Upvotes: 169
Views: 135044
Reputation: 199
This is a bug. Impossible to browse a branch if a tag exists with the same name.
Upvotes: 0
Reputation: 1150
This could also happen if you have a tag and a branch with the same name and you try to push them without. Of course, GIT will be confused.
Upvotes: 1
Reputation: 41
Our team needed push the local branch to the repository with a TAG with the same name.
This happen because, ARGO needs deploy an moodle apps , and not support build the submodules directly, So another team created a TAG, when we really need a BRANCH.
Steps:
Appear the error:
error: src refspec alt_v1.2.2 matches more than one error: failed to push some refs to 'https://gitlab.com/SOME_URL.git'
Solution:
and problem solved !
Upvotes: 3
Reputation: 1152
If you are using source tree then follow the following steps.
Try again to push your changes. now this will work.
Upvotes: 2
Reputation: 14457
If you're trying to push a tag that has the same name of a branch:
git push origin tag myTag
Upvotes: 55
Reputation: 8826
Change the names.
Whether you do it locally or remotely, just change the names.
A tag and a branch are fundamentally the same thing in git: they represent a pointer to a commit. The difference is that a branch pointer advances as you make commits, while a tag remains static.
However, you can perform a git checkout
on either a branch or a tag. Why would you fight with all these doubled up names? Change them.
Upvotes: 25
Reputation: 286
I was trying to push to a canonical repository this morning and got the following error:
$ git push origin master
error: src refspec master matches more than one.
error: failed to push some refs to 'ssh://user@host/srv/git/repo'
This happened because I had accidentally created a master tag locally:
$ git tag
master
tag1
tag2
tag3
tag4
Once I deleted this tag locally:
git tag -d master
I was able to push again.
Upvotes: 25
Reputation: 6553
Verify what tags are associated with your branch:
git tag
In my case, I had a tag with the same name of the branch. Deleting it worked:
git tag -d [tag-name]
Upvotes: 75
Reputation: 3176
This failed :
git push $origin $branch:$branch
While this worked for me :
git checkout $branch
git push $origin HEAD:$branch
Upvotes: 9
Reputation: 132988
The following command should work.
git push origin refs/heads/product-0.2:refs/heads/product-0.2
Upvotes: 211