赞
踩
前言:
在开发中我们经常使用tag保留历史版本,以防新开发功能bug快速回退到上一个版本。每次功能上线前均使用git flow 管理tag , 随着时间的推移,线上的tag数量可能达到七八十个。实际中其实并不会使用太早的tag,就算代码可以回溯,基本该版本的数据库等都需要配套,除非使用flyway等脚本维护,否则遗留并没有意义。删除的过程中,需要删除本地,再删除远程,对于大量的tag删除确实是一个很苦恼的事情。有没有批量删除某些tag呢。
这里先整理出两个git 删除命令:
- //删除本地tag
- git tag -d <tagname>
- //删除远程tag
- git push origin :refs/tags/<tagName>
- git show-ref --tags
- //或者
- git tag -l
展示效果如下:
正则匹配需要删除tag列表,这里先查看正则匹配到的tag列表,防止删除错误,这也是批量删除的关键
例如: 我这需要删除1.1.x的tag列表
git show-ref --tag|awk '$2~/1\.1\..'
执行的结果如下:
最后借助删除命令即可:
git show-ref --tag |awk '$2~/1\.1\../ {print ":" $2}'| 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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。