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

与远程标记同名的git push本地分支,git,git-branch,Git,Git Branch,我正在尝试将一个新的本地分支product-0.2推送到远程,其中已经有一个同名的标记(但分支本身不存在) 同: git push origin product-0.2:/refs/heads/product-0.2 尽管另一种方法可行,例如创建分支product-0.1,但在其上提交,然后应用标记product-0.1 有些人通过在本地删除冲突标记,然后推送分支,然后检索远程标记来解决这个问题,但这看起来很麻烦,而且容易出错 我怎样才能以最小的麻烦创建我的分支 感谢您的输入以下命令应该可以

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

同:

git push origin product-0.2:/refs/heads/product-0.2 
尽管另一种方法可行,例如创建分支
product-0.1
,但在其上提交,然后应用标记
product-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 push--设置上游源分支
  • 显示错误:

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

    解决方案:

  • git标签-d alt_v1.2.2
  • git push--设置上游源分支


  • 问题解决了

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

    Try
    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来说是新的,但我既不理解问题,也不理解答案。这个答案至少给出了a)建议和b)解释,甚至是对未来的建议。我会考虑问我自己的问题,但我厌倦了之前已经问过的评论——imho:一个不可理解的问题和一个初学者的问题是不一样的。但这就是生活;)接受答案,这是消除歧义的方法。不过,一开始不使用相同名称的标记和分支会更容易。有些工具(如SourceTree)会无意中发现它,您只能使用自己的设备,命令行是唯一的解决方案。谢谢你们+1.当您需要消除远程名称的歧义时,类似的事情也会起作用:
    refs/remotes/remote\u name/remote\u branch
    在不知不觉中命名了一个已标记的版本
    master
    ,并且无法再推送到具有相同名称的分支
    git-push-origin-refs/heads/master
    实现了这一技巧(然后我删除了该标记,这样它就不会发生了)。除了最佳实践之外,您仍然无法推送您尝试推送到的分支是默认分支。。我们如何解决这个问题?如果上述解决方案不起作用,请在卸下遥控器头后进行。git push origin——删除引用/标题/分支解释。需要删除本地标记。谢谢如果出于某种原因,它匹配多个遥控器,您可以通过以下方式删除标记或头部遥控器:git push origin:refs/tags/tag1I获取此错误:main->refs/heads/main(已存在)工作正常,有一个与我的分支同名的标记。我仍然得到以下信息:提示:更新被拒绝,因为标记已存在于遥控器中。干得好,先生!这应该是公认的答案。经常阅读长尾文章,这样知道答案很有用,但根本不回答问题。我不会投反对票,因为作者强调这是另一种方式,但答案很难接受。
    ssh:无法解析主机名head:nodename或servname提供的,或未知的