1. ホーム
  2. git

[解決済み] リモートリポジトリに存在しないローカルのgitタグを削除する

2022-03-17 11:15:49

質問

デプロイメントプロセスの一環として、gitのタグを使用しています。 時々、リモートリポジトリからこれらのタグを削除することによって、これらのタグをクリーンアップしたいと思います。

これはとても簡単なことです。 1人のユーザーが、ローカルタグとリモートタグを1つのコマンドで削除します。 この2つのステップを組み合わせた小さなシェルスクリプトがあります。

2番目(3番目、4番目、...)のユーザーのローカルタグは、リモートに反映されなくなりました。

のようなコマンドを探しています。 git remote prune origin リモートブランチが削除され、ローカルに追跡しているブランチをクリーンアップするものです。

あるいは、リモートのタグをリストアップする簡単なコマンドを利用して git tag -l .

解決方法は?

いい質問ですね :) 完全な答えはないのですが...。

とはいえ、リモートタグの一覧は git ls-remote . で参照されるリポジトリ内のタグを一覧表示するには origin を実行することになる。

git ls-remote --tags origin

というように、ハッシュとフレンドリーなタグ名のリストを返します。

94bf6de8315d9a7b22385e86e1f5add9183bcb3c        refs/tags/v0.1.3
cc047da6604bdd9a0e5ecbba3375ba6f09eed09d        refs/tags/v0.1.4
...
2f2e45bedf67dedb8d1dc0d02612345ee5c893f2        refs/tags/v0.5.4

このリストで生成されたタグとローカルにあるタグを比較するbashスクリプトを組めば、確かにそうなりますね。 例えば git show-ref --tags と同じ形式でタグ名を生成します。 git ls-remote ).


余談ですが git show-ref には、あなたが望んでいることと反対のことをするオプションがあります。 次のコマンドは、リモートブランチにあるすべてのタグをリストアップします。 しない はローカルにあります。

git ls-remote --tags origin | git show-ref --tags --exclude-existing