我正在尝试将新的本地分支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
。
有些人通过在本地删除冲突的标记来解决这个问题,然后推送分支,然后检索远程标记,但它看起来很麻烦且容易出错。
如何以最小的麻烦创建我的分支?
感谢您的输入
答案 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)
如果您正在使用源代码树,请执行以下步骤。
再试一次以推动您的更改。现在这可以工作。
答案 7 :(得分:0)
我们的团队需要将本地分支推送到具有相同名称的 TAG 的存储库。
发生这种情况是因为 ARGO 需要部署一个 Moodle 应用程序,并且不支持构建 直接子模块,所以另一个团队创建了一个 TAG,当我们真的需要一个 BRANCH 时。
步骤:
出现错误:
错误:src refspec alt_v1.2.2 匹配多个 错误:无法将一些引用推送到“https://gitlab.com/SOME_URL.git”
解决方案:
问题解决了!
答案 8 :(得分:0)
如果您有一个标签和一个同名的分支,而您试图将它们推送出去,也可能会发生这种情况。当然,GIT 会糊涂。