git push local branch with same name as remote tag

GitGit Branch

Git Problem Overview


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

Git Solutions


Solution 1 - Git

The following command should work.

git push origin refs/heads/product-0.2:refs/heads/product-0.2 

Solution 2 - Git

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]

Solution 3 - Git

If you're trying to push a tag that has the same name of a branch:

git push origin tag myTag

Solution 4 - Git

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.

Solution 5 - Git

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.

Solution 6 - Git

This failed :

git push $origin $branch:$branch 

While this worked for me :

git checkout $branch
git push $origin HEAD:$branch

Solution 7 - Git

If you are using source tree then follow the following steps.

  1. find the Tag name of branch in tags section
  2. click on Tag name delete tag.
  3. Make sure you check "remove tags from remote" and click ok

Try again to push your changes. now this will work.

Solution 8 - Git

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:

  1. pull repository from tag.
  2. git switch -c BRANCH
  3. git push --set-upstream origin BRANCH

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:

  1. git tag -d alt_v1.2.2
  2. git push --set-upstream origin BRANCH

and problem solved !

Solution 9 - Git

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.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionyouriView Question on Stackoverflow
Solution 1 - GitralphtheninjaView Answer on Stackoverflow
Solution 2 - GitecairolView Answer on Stackoverflow
Solution 3 - GitPaulo MersonView Answer on Stackoverflow
Solution 4 - GitTheBuzzSawView Answer on Stackoverflow
Solution 5 - GitJasbeer RawalView Answer on Stackoverflow
Solution 6 - GitRzRView Answer on Stackoverflow
Solution 7 - GitMuhammad BilalView Answer on Stackoverflow
Solution 8 - GitJuan Andres MercadoView Answer on Stackoverflow
Solution 9 - GithavijView Answer on Stackoverflow