首頁 > 軟體

Git批次刪除遠端的tag

2020-06-16 17:54:54

在我最新任職的團隊裡,我們採用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


IT145.com E-mail:sddin#qq.com