Appearance
Git 批量清理标签
1. 查看所有标签
先查看下所有本地标签 git tag -l:
Bash
username@pcname MINGW64 /yourpath/yourepo (branchname)
$ git tag -l
tagname001
tagname002
tagname003
tagname004
tagname005
tagname006
tagname007
tagname008
tagname009
...1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
2. 批量删除远端标签
Bash
$ git tag -l | awk '/^tagname\d+$/ {print ":refs/tags/" $1}' | xargs git push origin命令解释:
git tag -l:列出所有 Git 标签|:管道操作符,将前一个命令的输出传递给下一个命令awk '/^tagname\d+$/ {print ":refs/tags/" $1}':/.../:AWK 模式匹配部分^tagname\d+$:正则表达式{...}:匹配成功时,执行的动作$1:第一个字段(以空格为分隔符的文本中的第一个单词)的变量
xargs git tag -d:使用xargs将前面命令的输出作为参数传递给git tag -d,从而删除这些标签
Note
或者使用这条命令也是等效的:
Bash$ git show-ref --tag | awk '$2~/^tagname\d+$/ {print ":" $2}' | xargs git push origin其中
$2~表示从第二列开始匹配。
3. 批量删除本地标签
Bash
$ git tag -l | awk '/^tagname\d+$/ {print $1}' | xargs git tag -d4. 从文本文件中执行命令
或者把多个 git 命令放到文本文件里面,然后在 gitbash 里面逐行执行:
Text
while read -r line
do
echo $line
eval $line
done < "filepath"1
2
3
4
5
2
3
4
5