2021-05-12 14:32:11
Git批次刪除遠端的tag
在我最新任職的團隊裡,我們採用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
相關文章