git:只推送特定标签

Cre*_*ing 13 tags git

AFAIK,git push --tag将refs/tags下的每个标签推送到远程.我想知道git中是否有一种方法只能推送一些与通配符或正则表达式相匹配的标签?

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

git push <repo> refs/tags/v2.*
Run Code Online (Sandbox Code Playgroud)

并得到错误

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

当然,我总能做到

cd .git && ls refs/tags/v2.* | xargs git push <repo>
Run Code Online (Sandbox Code Playgroud)

但这并不会惹恼.

Ser*_*suk 21

git push <remote> tag <tag>
Run Code Online (Sandbox Code Playgroud)

在你的情况下它将是

git push origin tag v2.*
Run Code Online (Sandbox Code Playgroud)

  • 我更喜欢这个简单的解决方案。 (3认同)

Jos*_*ner 14

git tag | grep '^v2\.' | xargs --no-run-if-empty  git push <repo>
Run Code Online (Sandbox Code Playgroud)
  • .git可能不是目录,它可能根本不存在.子模块有文件指向根存储库.或者你可以GIT_DIR设置到其他地方.
  • 当没有标签符合您的条件时,您不希望进行推送.

  • 参见[`gitrevisions`](http://www.kernel.org/pub/software/scm/git/docs/gitrevisions.html)("当不明确时,通过参加下面的第一场比赛来消除<name>的歧义规则"). (3认同)
  • 因此标签始终优先于分支.很高兴知道.约瑟夫,请你把这些信息添加到你的答案中,我会标记完整.谢谢! (3认同)
  • `git 标签 | grep '^v2\.'` 可以简化为 `git tag -l "v2\.*"` (3认同)