すでにプッシュされた Git タグを削除するにはどうすればよいですか?
26 に答える
リモートタグ名への「空の」参照をプッシュできます。
git push origin :tagname
または、より表現的には、--delete
オプションを使用します (または-d
、git バージョンが 1.8.0 より古い場合):
git push --delete origin tagname
git にはタグの名前空間とブランチの名前空間があるため、ブランチとタグに同じ名前を使用できることに注意してください。タグの代わりにブランチを誤って削除しないようにしたい場合は、ブランチを削除しない完全な参照を指定できます。
git push origin :refs/tags/tagname
ローカル タグも削除する必要がある場合は、次を使用します。
git tag --delete tagname
バックグラウンド
ブランチ、タグ、またはその他の参照をリモート リポジトリにプッシュするには、「どのレポ、どのソース、どのデスティネーションか」を指定する必要があります。
git push remote-repo source-ref:destination-ref
マスター ブランチをオリジンのマスター ブランチにプッシュする実際の例は次のとおりです。
git push origin refs/heads/master:refs/heads/master
デフォルトのパスのため、次のように短縮できます。
git push origin master:master
タグは同じように機能します。
git push origin refs/tags/release-1.0:refs/tags/release-1.0
次のように短縮することもできます。
git push origin release-1.0:release-1.0
ソース ref (コロンの前の部分) を省略することで、宛先に「何も」プッシュせず、リモート エンドの ref を削除します。
もっと簡単な方法は、
git push --delete origin YOUR_TAG_NAME
IMO 接頭辞のコロン構文は、この状況では少し奇妙です
v0.1.0
削除するリモート タグがあり、リモートが の場合はorigin
、単純に次のようにします。
git push origin :refs/tags/v0.1.0
タグをローカルで削除する必要がある場合:
git tag -d v0.1.0
Git の削除に関する珍しい構文の説明については、 Adam Francoの回答を参照してください。:
すべてのローカル タグを削除し、リモート タグのリストを取得します。
git tag -l | xargs git tag -d
git fetch
すべてのリモート タグを削除する
git tag -l | xargs -n 1 git push --delete origin
ローカル タグのクリーンアップ
git tag -l | xargs git tag -d
端末から、次のようにします。
git fetch
git tag
git tag -d {tag-name}
git push origin :refs/tags/{tag-name}
Github.com にアクセスして更新すると、それらは消えます。
リモート タグとして名前が付けられたリモート ブランチがある場合、これらのコマンドがあいまいであることに注意してください。
git push origin :tagname
git push --delete origin tagname
したがって、次のコマンドを使用してタグを削除する必要があります。
git push origin :refs/tags/<tag>
そしてこれはブランチを削除するためのものです:
git push origin :refs/heads/<branch>
そうでない場合、次のようなエラーが発生します。
error: dst refspec <tagname> matches more than one.
error: failed to push some refs to '<repo>'
Git リポジトリで呼び出されるタグを作成した場合はrelease01
、次の手順を実行してリポジトリからタグを削除します。
git tag -d release01
git push origin :refs/tags/release01
Mercurial リポジトリから削除するには:
hg tag --remove featurefoo
https://confluence.atlassian.com/pages/viewpage.action?pageId=282175551を参照してください
他の回答はこれを達成する方法を示していますが、これはリモートリポジトリであるため、結果を覚えておく必要があります。
[再タグ付けについて]セクションのgittagのマニュアルページには、リモートリポジトリの他のユーザーに変更を丁寧に通知する方法についての適切な説明があります。彼らは、他の人があなたの変更をどのように取得すべきかを伝えるための便利なアナウンステンプレートさえ提供します。
#文字で始まるタグを作成した場合、たとえば#ST002
、通常のパターンを使用して削除できないことがあります。すなわち
git tag -d #STOO2
タグは削除しませんが、そのように文字列リテラルでラップします
git tag -d "#ST002" or git tag -d '#ST002'
そうすれば削除されます。#を使ってタグ名を書き間違えた人の助けになれば幸いです。
同じことを行う、作成したエイリアスを共有したかっただけです。
以下を~/.gitconfig
[alias]
delete-tag = "!f() { \
echo 'deleting tag' $1 'from remote/origin ausing command: git push --delete origin tagName;'; \
git push --delete origin $1; \
echo 'deleting tag' $1 'from local using command: git tag -d tagName;'; \
git tag -d $1; \
}; f"
使用法は次のようになります。
-->git delete-tag v1.0-DeleteMe
deleting tag v1.0-DeleteMe from remote/origin ausing command: git push --delete origin tagName;
To https://github.com/jsticha/pafs
- [deleted] v1.0-DeleteMe
deleting tag v1.0-DeleteMe from local using command: git tag -d tagName;
Deleted tag 'v1.0-DeleteMe' (was 300d3ef22)