git推送与远程标签同名的本地分支

问题描述 投票:0回答:10

我正在尝试将一个新的本地分支

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

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

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

感谢您的意见

git git-branch
10个回答
199
投票

以下命令应该有效。

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

66
投票

验证哪些标签与您的分支关联:

git tag

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

git tag -d [tag-name]

43
投票

如果您尝试推送与分支同名的tag

git push origin tag myTag

25
投票

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

$ 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

我又能够推动了。


25
投票

更改名称。

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

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

但是,您可以在分支或标签上执行

git checkout
。你为什么要和这些重复的名字打架呢?改变它们。


9
投票

失败了:

git push $origin $branch:$branch 

虽然这对我有用:

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

2
投票

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

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

再次尝试推送您的更改。现在这可以工作了。


2
投票

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

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

步骤:

  1. 从标签中提取存储库。
  2. git switch -c 分支
  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

问题解决了!


1
投票

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


© www.soinside.com 2019 - 2024. All rights reserved.