回答:
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
'
タグ名にaが含まれていない限り、これで問題ありません。そのためには、次のコマンドで問題ありません。
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
行のリストを取得し、それらを引用符で囲み、それらを1行にして、その行をコマンドに渡す他の方法が存在する可能性があります。これを考慮すると、猫のスキニング環境はすべて究極のものになります。
xargs -L 1
ますか?
git tag
1行に1つずつタグを返し、1行にxargs -L 1
1つ出力するので、それは何のためにあるのでしょうか。
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 tagを実行してそのリストをgit tag -dにフィードすることにより、すべてのローカルタグを削除します。
FOR /f "tokens=*" %a in ('git tag') DO git tag -d %a
(次で見つかりました:https : //gist.github.com/RandomArray/fdaa427878952d9768b0)
これらのオプションはすべてLinuxでのみ機能するため、これを処理する必要がある人にとっては、次のWindowsの同等機能があります。
FOR /F usebackq %t IN (`git tag`) DO @git tag --delete %t
プレフィックスの付いたタグを削除する必要があります
たとえば、タグv0.0.1、v0.0.2、v0.0.3、v0.0.4、v0.0.5を削除する必要があります
git tag -d $(git tag -l "v0.0.*")
接頭辞付きのすべてのタグをリストするには
git tag -l "v0.0.*"
タグを削除するには
git tag -d $tag_names
それが最初のステートメントが機能する方法です
Powershell v7は、削除する必要がある上流(起点)タグが多数ある場合に、並列foreachをサポートします。
git tag | foreach-object -Parallel {
git push origin --delete $_
git tag -d $_
}
git tag -l | xargs -n 1 git push --delete origin
はリモートから削除していました。