web-dev-qa-db-ja.com

複数のgitリモートタグを削除して1回プッシュする

Gitでは、プッシュする前に複数のタグを削除するにはどうすればよいですか?

一度に1つのタグでそれを行う方法を知っています。複数回行うことが可能かどうかわからない。

15
KanwarG

複数のタグをローカルで削除するには: git tag

git tag -d <タグ名> ...

だから単純に:

git tag -d TAG1 TAG2 TAG3

複数のタグをリモートで削除するには: git Push

gitプッシュ[-d | --delete] [<リポジトリ> [<refspec> ...]]

だから単純に:

git Push ${REMOTE_NAME:-Origin} --delete TAG1 TAG2 TAG3
33
zigarn

grepxargsがインストールされている場合、これを行う簡単な方法を見つけました。 https://Gist.github.com/shsteimer/7257245 からこれを恥知らずに取っています。

探しているパターンのすべてのリモートタグを削除します。

git tag | grep <pattern> | xargs -n 1 -I% git Push Origin :refs/tags/%

ローカルタグをすべて削除します。

git tag | xargs -n 1 -I% git tag -d %

まだ残っているリモートタグを取得します。

git fetch
10
Lemtronix

一致するすべてのタグパターンが削除されます。

//Delete remote:
git Push -d Origin $(git tag -l "tag_prefix*")

// Delete local:
git tag -d $(git tag -l "tag_prefix*")

// Examples:
git tag -d $(git tag -l "v1.0*")
git Push -d Origin $(git tag -l "*v3.[2]*-beta*")
6
AechoLiu

削除したいすべてのタグを指定して、1つのコマンドで複数のタグを削除できます。

git tag -d 1.1 1.2 1.3

次に、削除されたすべてのタグをプッシュできます。もちろん、プッシュする前に別のコマンドでタグを削除できます。

タグをプッシュ削除するには、削除するすべてのタグをリストします。 1つのタグを削除するコマンドは同じです

git Push --delete Origin 1.1 1.2 1.3
3
Francesco