Skip to content

Instantly share code, notes, and snippets.

@jony4
Last active May 30, 2019 08:46
Show Gist options
  • Save jony4/8f36b84234e4cbd6590f9847a364edf5 to your computer and use it in GitHub Desktop.
Save jony4/8f36b84234e4cbd6590f9847a364edf5 to your computer and use it in GitHub Desktop.
git tag batch delete local & remote
package main
import (
"bytes"
"fmt"
"log"
"os/exec"
"strings"
)
func main() {
cmd := exec.Command("git", "tag")
var out bytes.Buffer
cmd.Stdout = &out
err := cmd.Run()
if err != nil {
log.Fatal("git tag error ", err)
}
tags := strings.Split(out.String(), "\n")
for _, tag := range tags {
if strings.HasPrefix(tag, "test-") || strings.HasPrefix(tag, "production-") {
// local
local := exec.Command("git", "tag", "-d", fmt.Sprintf("%s", tag))
err := local.Run()
if err != nil {
log.Fatal("git tag -d error ", err)
}
fmt.Println("local tag", tag, "has been deleted")
// remote
remote := exec.Command("git", "push", "origin", fmt.Sprintf(":%s", tag))
err = remote.Run()
if err != nil {
log.Print("git tag -d push to remote error ", err)
}
fmt.Println("remote tag", tag, "has been deleted")
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment