web-dev-qa-db-ja.com

Gitリポジトリからすべてのタグを削除する

Gitリポジトリからすべてのタグを削除したい。どうやってやるの?

git tag -d tagnameを使用してtagnameタグをローカルで削除し、git Push --tagsを使用してgitプロバイダーのタグを更新します。

私は試した:

git tag -d *

しかし、*は現在のディレクトリのファイルを意味することがわかります。

$ git tag -d *
error: tag 'file1' not found.
error: tag 'file2' not found.
...

たくさんのタグがあり、それらをすべて削除したいと考えています。

187
Ionică Bizău
git tag | xargs git tag -d

すべてをパイプするLinuxの哲学を使用してください。 Windowsでは、同じコマンドでgit bashを使用します。

346

(ローカルタグを削除する前に)リモートタグを削除するには、次のようにします。

git tag -l | xargs -n 1 git Push --delete Origin

次に、ローカルコピーを削除します。

git tag | xargs git tag -d
157
karlingen

1つのコマンドですべてのタグをプッシュ削除する方が効率的です。特に数百を持っている場合。

適切な非Windowsシェルで、すべてのリモートタグを削除します。

git tag | xargs -L 1 | xargs git Push Origin --delete

次に、すべてのローカルタグを削除します。

git tag | xargs -L 1 | xargs git tag --delete

タグ名に'が含まれていない限り、これは問題ありません。そのためには、次のコマンドで問題ないはずです。

git tag | xargs -I{} echo '"{}"' | tr \\n \\0 | xargs --null git Push Origin --delete
git tag | xargs -I{} echo '"{}"' | tr \\n \\0 | xargs --null git tag --delete

行のリストを取得し、引用符で囲み、それらを単一行にして、その行をコマンドに渡す他の方法がおそらく存在します。これを考慮すると、究極の猫のスキニング環境とすべてです。

42

リモートからタグを削除する方法が欠けていたステファンの答えに追加します。 Windows PowerShellでは、これを実行して、最初にリモートタグを削除し、次にローカルタグを削除できます。

git tag | foreach-object -process { git Push Origin --delete $_ }
git tag | foreach-object -process { git tag -d $_ }  
21
Yong Choi

PowerShellを使用するWindowsユーザーの場合:

git tag | foreach-object -process { git tag -d $_ }

これは、返される各行に対してgit tagを実行することにより、git tag -dによって返されるすべてのタグを削除します。

21

ローカルリポジトリにタグがない場合は、ローカルリポジトリに移動することなくリモートタグを削除できます。

git ls-remote --tags --refs Origin | cut -f2 | xargs git Push Origin --delete

「Origin」をリモートハンドラー名に置き換えることを忘れないでください。

13

Windowsユーザーの場合:

これは、gitタグを実行し、そのリストをgitタグ-dに渡すことにより、すべてのローカルタグを削除します。

FOR /f "tokens=*" %a in ('git tag') DO git tag -d %a

(発見: https://Gist.github.com/RandomArray/fdaa427878952d9768b

10
Gigi2m02

以下も使用できます。

git tag -d $(git tag)
6
ViZeke

これらのオプションはすべてLinuxでのみ機能するため、これに対処する必要がある人に相当するウィンドウは次のとおりです。FOR /F usebackq %t IN (git tag) DO @git tag --delete %t

0
DarkWiiPlayer