当前位置:   article > 正文

GIT TAG 批量删除_git 删除tag

git 删除tag

前言:

  在开发中我们经常使用tag保留历史版本,以防新开发功能bug快速回退到上一个版本。每次功能上线前均使用git flow 管理tag , 随着时间的推移,线上的tag数量可能达到七八十个。实际中其实并不会使用太早的tag,就算代码可以回溯,基本该版本的数据库等都需要配套,除非使用flyway等脚本维护,否则遗留并没有意义。删除的过程中,需要删除本地,再删除远程,对于大量的tag删除确实是一个很苦恼的事情。有没有批量删除某些tag呢。

这里先整理出两个git 删除命令:

  1. //删除本地tag
  2. git tag -d <tagname>
  3. //删除远程tag
  4. git push origin :refs/tags/<tagName>
  • 先查看目前存在的远程tag列表
     
    1. git show-ref --tags
    2. //或者
    3. git tag -l

    展示效果如下:

正则匹配需要删除tag列表,这里先查看正则匹配到的tag列表,防止删除错误,这也是批量删除的关键

例如: 我这需要删除1.1.x的tag列表

git show-ref --tag|awk '$2~/1\.1\..'
  •     $2      对第二列进行操作,即 refs/tags/这一列
  •     ~        匹配
  •     '//'       awk 模式匹配的开始结束标志
  •    1\.1\..  第一位是1 , 在正则中 . 匹配任意单个字符,所以这里 \. 类似于转义,纯粹标识字符 (.) 后面 的\. 也是标识字符 .  所以这个正则的含义解读为 :匹配第二列,然后对第二列进行正则匹配 字符(1.1.x),x表示任意单个字符。

执行的结果如下:

   最后借助删除命令即可:

git show-ref --tag |awk '$2~/1\.1\../ {print ":" $2}'| xargs git push origin
  • {print ":" $2} 输出字符串 :+第二列 ,组成字符串 类似于 (:refs/tags/1.1.0)
  • xargs git push origin 将前面的输出结果作为参数执行删除命令

删除本地tag 同理 

git tag -l |awk '/1\.1\../' | xargs git tag -d

结果如下:

本文中使用还使用到的awk ,xargs等linux相关命令,可自行查看学习

附件一个命令:当删除远端tag之后,还有一种思路就是删除本地所有的tag,重新拉去远端tag ,这种方案更简单粗暴,命令如下:

git tag|xargs git tag -d|git pull

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号