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.
...
たくさんのタグがあり、それらをすべて削除したいと考えています。
git tag | xargs git tag -d
すべてをパイプするLinuxの哲学を使用してください。 Windowsでは、同じコマンドでgit bashを使用します。
(ローカルタグを削除する前に)リモートタグを削除するには、次のようにします。
git tag -l | xargs -n 1 git Push --delete Origin
次に、ローカルコピーを削除します。
git tag | xargs git tag -d
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
行のリストを取得し、引用符で囲み、それらを単一行にして、その行をコマンドに渡す他の方法がおそらく存在します。これを考慮すると、究極の猫のスキニング環境とすべてです。
リモートからタグを削除する方法が欠けていたステファンの答えに追加します。 Windows PowerShellでは、これを実行して、最初にリモートタグを削除し、次にローカルタグを削除できます。
git tag | foreach-object -process { git Push Origin --delete $_ }
git tag | foreach-object -process { git tag -d $_ }
PowerShellを使用するWindowsユーザーの場合:
git tag | foreach-object -process { git tag -d $_ }
これは、返される各行に対してgit tag
を実行することにより、git tag -d
によって返されるすべてのタグを削除します。
ローカルリポジトリにタグがない場合は、ローカルリポジトリに移動することなくリモートタグを削除できます。
git ls-remote --tags --refs Origin | cut -f2 | xargs git Push Origin --delete
「Origin」をリモートハンドラー名に置き換えることを忘れないでください。
Windowsユーザーの場合:
これは、gitタグを実行し、そのリストをgitタグ-dに渡すことにより、すべてのローカルタグを削除します。
FOR /f "tokens=*" %a in ('git tag') DO git tag -d %a
(発見: https://Gist.github.com/RandomArray/fdaa427878952d9768b )
以下も使用できます。
git tag -d $(git tag)
これらのオプションはすべてLinuxでのみ機能するため、これに対処する必要がある人に相当するウィンドウは次のとおりです。FOR /F usebackq %t IN (
git tag) DO @git tag --delete %t