git:只推特定的标签

git:只推特定的标签,git,tags,Git,Tags,AFAIK,git push--tag将refs/tags下的每个标记推送到远程。我想知道在git中是否有办法只推送一些与通配符或regexp匹配的标记 例如,我的回购协议有标签v1.0,v1.1,v2.0和v2.1。我只想推送v2.*。我试过了 git push <repo> refs/tags/v2.* git推送参考/tags/v2* 然后出错了 致命:refs/tags/v2中REFSEC的远程部分不是有效名称* 当然,我总能做到 cd .git && l

AFAIK,
git push--tag
将refs/tags下的每个标记推送到远程。我想知道在git中是否有办法只推送一些与通配符或regexp匹配的标记

例如,我的回购协议有标签
v1.0
v1.1
v2.0
v2.1
。我只想推送
v2.*
。我试过了

git push <repo> refs/tags/v2.*
git推送参考/tags/v2*
然后出错了

致命:refs/tags/v2中REFSEC的远程部分不是有效名称*

当然,我总能做到

cd .git && ls refs/tags/v2.* | xargs git push <repo>
cd.git&&ls-refs/tags/v2.*xargs-git-push
但这并没有git的味道。

git标签| grep'^v2\.| xargs——如果git推送为空,则不会运行
git tag | grep '^v2\.' | xargs --no-run-if-empty  git push <repo>
  • .git
    可能不是目录,它可能根本不存在。子模块有指向根存储库的文件。或者您可以将
    GIT\u DIR
    设置为其他位置
  • 如果没有符合条件的标记,则不希望执行推送

如果有一个名为“v2.0”的本地分支会怎样?git push如何解决不明确的名称?使用相同名称的标记和分支是个坏主意。Git处理得不好。对于标记使用
v2.0
,对于分支使用类似
stable-2.x
。示例:请参见(“当不明确时,通过采用以下规则中的第一个匹配项来消除歧义”)。因此标记始终优先于分支。很高兴知道。约瑟夫,请你把这些信息添加到你的答案中,我会标记为完成。谢谢
git标记| grep'^v2\.
可以简化为
git标记-l“v2\.*”
git push <remote> tag <tag>
git push origin tag v2.*