git删除tag标签

在管理项目中,使用 Git 管理代码,发现 TAG 的删除比较头痛,经常出现有人创建了 TAG,过一段时间删除,可自己本地的 TAG 一直存在,如果 push 这个 TAG 到远端,那么此 TAG 将永远不会被删除。 强迫症的人怎么可以忍受。
Let us go.

批处理脚本

记得后缀是.sh

git_delete_remote_does_not_exist_tag.sh

1
2
3
4
5
6
7
#! /bin/bash
# 删除远端不存在的tag

cd $REPO/.git
git tag -l | xargs git tag -d
git fetch origin --prune
git fetch origin --tags

git_delete_remote_tag.sh

1
2
3
4
5
6
7
8
9
10
11
#! /bin/bash
# 删除远端tag

# https://sexywp.com/how-to-bulk-delete-tags-local-and-remote.htm
# 删除远端所有tag
git show-ref --tag | awk '/(.*)(\s+)(.*)$/ {print ":" $2}' | xargs git push origin

# https://www.xingjiehu.com/2019/05/30/cjx9s7pjc000202omt4s02qgk/
# 删除制定规则以外的全部远端tag
# 先获取远程所有标签 | 然后用awk获取所有标签名 | 再用sed去掉带有^{}的标签 | 最后执行用git push删除
# git ls-remote --tags | awk '/(.*)(\s+)(.*)$/ {print ":" $2}' | sed '/}$/'d | xargs git push origin

SourceTree 创建自定义事件

  • 打开 sourceTree 的偏好设置

  • 点击“添加”

    1. 输入标题
    2. 在“运行的脚本”,选择刚刚创建的脚本git_delete_remote_does_not_exist_tag.sh
    3. 确定

  • 执行操作

    添加完成后,打开需要更新 TAG 的 Git 项目,然后选择自定义操作

    坐等一会,远程不存在的 TAG 就 Gone 了。 _

其他问题

如果执行自定义操作出现launch path not accessible错误提示,表示 shell 脚本文件没有权限。

只需要给文件授权即可:

1
chmod 0755 git_delete_remote_does_not_exist_tag.sh

注:获取 TAG 的方法,点击“抓取”,然后选中“抓取并在本地存储所有标签”

坚持原创技术分享,您的支持将鼓励我继续创作!
  • 本文作者: Leo
  • 本文链接: https://xuebin.me/posts/f14d4f81.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!