リモートリポジトリに存在しないローカルgitタグを削除する 質問する

リモートリポジトリに存在しないローカルgitタグを削除する 質問する

デプロイメント プロセスの一環として、git でタグを使用します。時々、リモート リポジトリからこれらのタグを削除してクリーンアップする必要があります。

これは非常に簡単です。 1 人のユーザーが 1 セットのコマンドでローカル タグとリモート タグを削除します。 両方の手順を組み合わせた小さなシェル スクリプトがあります。

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

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

あるいは、リモート タグを一覧表示する簡単なコマンドを使用して、 経由で返されるローカル タグと比較することもできますgit tag -l

ベストアンサー1

これは素晴らしい質問です。私も同じことを疑問に思っていました。

スクリプトを書きたくなかったので、別の解決策を探しました。重要なのは、タグをローカルで削除し、git fetch を使用してリモート サーバーから「取り戻す」ことができることを発見することです。タグがリモートに存在しない場合は、削除されたままになります。

したがって、次の 2 行を順番に入力する必要があります。

git tag -l | xargs git tag -d
git fetch --tags

これら:

  1. ローカル リポジトリからすべてのタグを削除します。 ちなみに、xargs は「tag -l」によって出力された各タグを「tag -d」のコマンド ラインに配置します。 これがないと、git は stdin を読み取らないため何も削除しません (愚かな git)。

  2. リモート リポジトリからすべてのアクティブなタグを取得します。

これは Windows でも問題なく動作します。

おすすめ記事