git push local branch与remote tag同名

you*_*uri 96 git git-branch

我正在尝试将新的本地分支推product-0.2送到远程,其中已经存在具有相同名称的标记(但分支本身不存在)

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'
Run Code Online (Sandbox Code Playgroud)

与:相同:

git push origin product-0.2:/refs/heads/product-0.2 
Run Code Online (Sandbox Code Playgroud)

虽然相反的方式有效,例如创建一个分支product-0.1,然后提交它然后应用标记product-0.1.

有些人通过在本地删除冲突标记,然后推送分支,然后检索远程标记来解决这个问题,但它看起来很麻烦且容易出错.

如何以最小的麻烦创建我的分支?

感谢您的输入

ral*_*nja 142

以下命令应该有效.

git push origin refs/heads/product-0.2:refs/heads/product-0.2 
Run Code Online (Sandbox Code Playgroud)

  • 接受的答案,这是消除歧义的方法.尽管如此,首先更容易不使用具有相同名称的标签和分支.一些工具(例如SourceTree)会偶然发现它,您将被留给自己的设备,命令行作为唯一的解决方案.感谢你们! (14认同)
  • +1。当您需要消除远程名称的歧义时,类似的事情会起作用:`refs/remotes/remote_name/remote_branch` (2认同)

eca*_*rol 32

验证与您的分支关联的标记:

git tag
Run Code Online (Sandbox Code Playgroud)

就我而言,我有一个与分支名称相同的标签.删除它有效:

git tag -d [tag-name]
Run Code Online (Sandbox Code Playgroud)

  • 工作正常,有一个与我的分支同名的标签。 (2认同)

The*_*Saw 17

更改名称.

无论是本地还是远程,只需更改名称即可.

标签和分支在git中基本相同:它们表示提交的指针.不同之处在于分支指针在您提交时前进,而标记保持静态.

但是,您可以git checkout在分支或标记上执行.你为什么要与所有这些翻倍的名字作斗争?改变他们.


Jas*_*wal 9

我今天早上试图推送到规范的存储库并得到以下错误:

$ 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'
Run Code Online (Sandbox Code Playgroud)

发生这种情况是因为我在本地意外创建了主标记:

$ git tag
master
tag1
tag2
tag3
tag4
Run Code Online (Sandbox Code Playgroud)

我在本地删除此标记后:

git tag -d master
Run Code Online (Sandbox Code Playgroud)

我能够再次推动.

  • 很好的解释。需要删除本地标签。谢谢! (2认同)

Pau*_*son 7

如果您尝试推送与分支名称相同的标签

git push origin tag myTag
Run Code Online (Sandbox Code Playgroud)

  • 干得好先生!这应该是公认的答案。总是读长尾巴的答案 (2认同)

RzR*_*RzR 5

这失败了:

git push $origin $branch:$branch 
Run Code Online (Sandbox Code Playgroud)

虽然这对我有用:

git checkout $branch
git push $origin HEAD:$branch
Run Code Online (Sandbox Code Playgroud)