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

我试图将一个新的本地分支 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

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

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

谢谢你的建议

110788 次浏览

下面的命令应该可以工作。

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

改名字。

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

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

但是 可以对分支或标记执行 git checkout。你为什么要和这些双重身份的人打架?改变他们。

这种做法失败了:

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 push origin tag myTag

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

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

再次尝试推动你的改变。现在这将工作。

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

这是因为,ARGO 需要部署一个 moodle 应用程序,而不支持构建 所以另一个团队创建了一个 TAG,当我们真的需要一个分支的时候。

步骤:

  1. 从标记中提取存储库。
  2. 基特开关 -c 布兰奇
  3. Git 推送——设置上游原点

出现错误:

Error: src refspec alt _ v1.2.2匹配不止一个 错误: 未能按下某些参考文献“ https://gitlab.com/some_url.git”

解决方案:

  1. Git tag-d alt _ v1.2
  2. Git 推送——设置上游原点

问题解决了!

如果您有一个具有相同名称的标记和一个分支,并且您试图不使用它们来推送它们,那么也可能会发生这种情况。当然,GIT 会感到困惑。