与远程标记同名的git push本地分支

与远程标记同名的git push本地分支,git,git-branch,Git,Git Branch,我正在尝试将一个新的本地分支产品-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 som

我正在尝试将一个新的本地分支产品-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 
尽管另一种方法可行,例如创建一个分支产品-0.1,对其进行提交,然后应用标记产品-0.1

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

我怎样才能以最小的麻烦创建我的分支


感谢您的输入

以下命令应该可以工作

git push origin refs/heads/product-0.2:refs/heads/product-0.2 
更改名称

无论您是在本地还是远程执行,只需更改名称即可

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

但是,您可以对分支或标记执行git签出。你为什么要用这些双倍的名字打架?更改它们。

此操作失败:

git push $origin $branch:$branch 
虽然这对我有用:

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

验证哪些标记与分支关联:

git tag
在我的例子中,我有一个与分支同名的标签。删除它有效:

git tag -d [tag-name]

今天早上我试图推送到一个规范存储库,但出现了以下错误:

$ 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
在本地删除此标记后:

$ git tag
master
tag1
tag2
tag3
tag4
git tag -d master

我可以再次推送。

如果您尝试推送与分支同名的标记:

git push origin tag myTag

如果您使用的是源代码树,请按照以下步骤操作

在标记部分中查找分支的标记名称 单击标记名删除标记。 确保选中“从远程删除标记”,然后单击“确定”
再次尝试推送您的更改。现在,这将起作用。

我们的团队需要使用同名标记将本地分支推送到存储库

这是因为ARGO需要部署moodle应用程序,而不支持构建应用程序 直接使用子模块,所以当我们真正需要分支时,另一个团队创建了一个标记

步骤:

从标记中提取存储库。 git交换机-c分支 git推集上游源分支 显示错误:

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

解决方案:

git标签-d alt_v1.2.2 git推集上游源分支
问题解决了

如果您有一个标签和一个同名的分支,并且您尝试在没有标签的情况下推送它们,也可能发生这种情况。当然,GIT会感到困惑。

尝试refs/heads/product-0.2:refs/heads/product-0.2,即不带前导斜杠,并且在本地端提供完整的refspec。可以尝试GIT push origin product-0.2:product-0.2应该/可以使用“补丁级别”的最后一位调用标记product-0.2.0,但仍然,我们有适当的命名约定,过去在标记之前创建分支时没有遇到问题。如果团队已经开始使用分支,重命名它不是很困难吗?更改尚未推送的实体的名称。你确定@TheBuzzSaw?因为在本地,我可以使用相同的名称,作为不同的东西。虽然上面选择的答案可能已经解决了这个问题-对于git来说是新的,但我既不理解问题,也不理解答案。这个答案至少给了b一个建议和一个解释,甚至是对未来的建议。我会考虑问我自己的问题,但我厌倦了之前已经问过的评论——imho:一个不可理解的问题和一个初学者的问题是不一样的。但这就是生活;接受答案,这是消除歧义的方法。不过,一开始不使用相同名称的标记和分支会更容易。一些工具(如SourceTree)会无意中发现它,而您只能使用自己的设备,命令行是唯一的解决方案。谢谢你们+1.当您需要消除远程名称的歧义时,类似的事情也会起作用:refs/remotes/remote_name/remote_branchh在不知不觉中命名了一个已标记的发布主版本,并且无法再推送到具有相同名称的分支。git push origin refs/heads/master完成了这一操作,然后我删除了该标记,这样它就不会再发生了。除了最佳实践之外,您仍然无法将您尝试推送到的分支推送到默认分支。。我们如何解决这个问题?如果上述解决方案不起作用,请在卸下遥控器头后进行。git推送原点-删除引用/标题/分支解释。需要删除本地标记。谢谢如果出于某种原因,它匹配多个远程设备,您可以通过:git push origin:refs/tags/tag1I删除标记或头部远程设备。我得到这个错误:main->refs/heads/main已经存在。很好,有一个与我的分支同名的标记。我仍然得到以下信息:提示:更新被拒绝,因为远程设备中已经存在标记。干得好,先生!这应该是我们所能接受的
我的回答是否定的。经常阅读长尾文章,这样知道答案很有用,但根本不回答问题。我不会投反对票,因为作者强调这是另一种方式,但答案很难接受。ssh:无法解析主机名head:nodename或servname,或者未知