在我最新任职的团队里,我们采用Git正式作为我们团队开发管理的工具。我们使用Git来做版本控制,研发管理,和线上部署。我们将Git的版本库直接作为代码目录,来存放线上代码,发布的方法,就简化成了,将线上环境的代码目录,checkout 到指定的 tag,简单,快捷。
这个方法执行了一段时间后,发现一个新的烦恼,就是中央版本库的tag数量会变得非常多,多的时候,达到300多个,这其实也没什么了不起,但是我们自己采用gitlab来搭建自己的中央版本库,这个gitlab,还是很多bug的,当tag多了以后,整个网站都呈现出不是特别正常的样子,所以,就需要保持较少的tag列表,让网站保持比较高的性能。然后我就有了一个动机,就是删除远端的tag列表。
我用Google 搜了 how to delete git tags batch,发现老外的说法大概是,bulk delete,哈哈,英语不行啊。
无非就是shell下的一些做法,感觉实际使用上也够了。
首先就是找到远端要删除的tags列表,关键是用对指令。
git show-ref –tag
这个指令可以列出所有的远端的tag列表,然后就是shell下的一般处理手段了。
git push origin :<tag>
如上指令,会致使远程的tag被删除。用管道一连接,万事大吉。
git show-ref –tag | awk ‘/(.*)(\s+)(.*)$/ {print “:” $2}’ | xargs git push origin
上面的指令就是拼接完整的指令了,不过这个指令,会删除远端所有的tag,慎用,如果希望删除符合条件的,应该修改awk指令的正则表达式。
删除完了远端的tag,本地的tag,删法还不是太一样,不过原理相同。
git tag | grep “v1.1.0.\d$” | xargs git tag -d
举个例子,上述命令删除本地所有 v1.1.0.x 的tag,这个指令,会最多删除10个tag。
GitHub 教程系列文章:
GitHub 使用教程图文详解 http://www.linuxidc.com/Linux/2014-09/106230.htm
Git 标签管理详解 http://www.linuxidc.com/Linux/2014-09/106231.htm
Git 分支管理详解 http://www.linuxidc.com/Linux/2014-09/106232.htm
Git 远程仓库详解 http://www.linuxidc.com/Linux/2014-09/106233.htm
Git 本地仓库(Repository)详解 http://www.linuxidc.com/Linux/2014-09/106234.htm
Git 服务器搭建与客户端安装 http://www.linuxidc.com/Linux/2014-05/101830.htm
Git 概述 http://www.linuxidc.com/Linux/2014-05/101829.htm
分享实用的GitHub 使用教程 http://www.linuxidc.com/Linux/2014-04/100556.htm
Ubuntu下Git服务器的搭建与使用指南 http://www.linuxidc.com/Linux/2015-07/120617.htm
Git 的详细介绍:请点这里
Git 的下载地址:请点这里
本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-08/121966.htm