git push local branch与remote tag同名

时间:2012-02-21 13:54:08

标签: 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'

同样:

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

虽然相反的方法有效,例如创建一个分支product-0.1,然后对其进行提交,然后应用标记product-0.1

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

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

感谢您的输入

9 个答案:

答案 0 :(得分:129)

以下命令应该有效。

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

答案 1 :(得分:30)

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

git tag

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

git tag -d [tag-name]

答案 2 :(得分:15)

更改名称。

无论是本地还是远程,只需更改名称。

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

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

答案 3 :(得分:7)

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

$ 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'

这是因为我不小心在本地创建了主标记:

$ git tag
master
tag1
tag2
tag3
tag4

我在本地删除此标记后:

git tag -d master

我能够再次推动。

答案 4 :(得分:5)

这失败了:

git push $origin $branch:$branch 

虽然这对我有用:

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

答案 5 :(得分:4)

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

git push origin tag myTag

答案 6 :(得分:0)

如果您正在使用源代码树,请执行以下步骤。

  1. 在标签部分中找到分支的标签名称
  2. 单击“标记名称”删除标记。
  3. 确保您选中“从远程删除标签”,然后单击“确定”

再试一次以推动您的更改。现在这可以工作。

答案 7 :(得分:0)

我们的团队需要将本地分支推送到具有相同名称的 TAG 的存储库。

发生这种情况是因为 ARGO 需要部署一个 Moodle 应用程序,并且不支持构建 直接子模块,所以另一个团队创建了一个 TAG,当我们真的需要一个 BRANCH 时。

步骤:

  1. 从标签中拉取存储库。
  2. git switch -c BRANCH
  3. git push --set-upstream origin BRANCH

出现错误:

错误:src refspec alt_v1.2.2 匹配多个 错误:无法将一些引用推送到“https://gitlab.com/SOME_URL.git”

解决方案:

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

问题解决了!

答案 8 :(得分:0)

如果您有一个标签和一个同名的分支,而您试图将它们推送出去,也可能会发生这种情况。当然,GIT 会糊涂。