SourceTree 删除远程不存在的标签(Windows)

在网上找了几个例子都是在 MacOS 上执行的,需要用到管道和 xargs 命令,可惜 windows 上没有。
只好自己写了一个 windows 版的。
因为没有管道,只能把获取到的标签名称保存到临时文件,处理结束后再删除掉。

  1. 新建一个 删除远程不存在的标签.bat 文件,内容如下:

    @echo off
    cd $REPO/.git
    set tagFileName=local-tags.txt
    git tag -l >> %tagFileName%
    for /f %%x in (%tagFileName%) do git tag -d %%x
    git fetch origin --prune
    git fetch origin --tags
    del %tagFileName%
    cd ..
    
  2. 在 SourceTree 的菜单 工具 => 选项 => 自定义操作 中添加一个新的自定义操作。

    标题:删除远程不存在的标签
    运行的脚本:D:\...\...\Tool\删除远程不存在的标签.bat

    其它选项可以根据需要勾选,然后点击确定保存。

  3. 选择需要删除 Tag 的仓库标签。

  4. 选择菜单 操作 => 自定义操作 => 删除远程不存在的标签。