git push local branch with same name as remote tag

久未见 提交于 2019-11-27 09:27:10

问题


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


回答1:


The following command should work.

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



回答2:


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]



回答3:


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.




回答4:


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.




回答5:


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

git push origin tag myTag



回答6:


This failed :

git push $origin $branch:$branch 

While this worked for me :

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


来源:https://stackoverflow.com/questions/9378760/git-push-local-branch-with-same-name-as-remote-tag

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!