4221

すでにプッシュされた Git タグを削除するにはどうすればよいですか?

4

26 に答える 26

7011

リモートタグ名への「空の」参照をプッシュできます。

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 を削除します。

于 2011-03-29T23:45:58.983 に答える
490

もっと簡単な方法は、

git push --delete origin YOUR_TAG_NAME

IMO 接頭辞のコロン構文は、この状況では少し奇妙です

于 2012-10-09T00:47:04.520 に答える
252

v0.1.0削除するリモート タグがあり、リモートが の場合はorigin、単純に次のようにします。

git push origin :refs/tags/v0.1.0

タグをローカルで削除する必要がある場合:

git tag -d v0.1.0

Git の削除に関する珍しい構文の説明については、 Adam Francoの回答を参照してください。:

于 2012-07-21T16:14:27.933 に答える
117

すべてのローカル タグを削除し、リモート タグのリストを取得します

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
于 2013-04-02T02:26:35.257 に答える
37

端末から、次のようにします。

git fetch
git tag
git tag -d {tag-name}
git push origin :refs/tags/{tag-name}

Github.com にアクセスして更新すると、それらは消えます。

于 2016-06-27T13:23:08.707 に答える
20

リモート タグとして名前が付けられたリモート ブランチがある場合、これらのコマンドがあいまいであることに注意してください。

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>'
于 2016-05-05T17:28:43.563 に答える
10

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を参照してください

于 2014-11-11T05:54:58.173 に答える
6

他の回答はこれを達成する方法を示していますが、これはリモートリポジトリであるため、結果を覚えておく必要があります。

[再タグ付けについて]セクションのgittagのマニュアルページには、リモートリポジトリの他のユーザーに変更を丁寧に通知する方法についての適切な説明があります。彼らは、他の人があなたの変更をどのように取得すべきかを伝えるための便利なアナウンステンプレートさえ提供します。

于 2013-03-04T17:04:01.063 に答える
4

#文字で始まるタグを作成した場合、たとえば#ST002、通常のパターンを使用して削除できないことがあります。すなわち

git tag -d #STOO2

タグは削除しませんが、そのように文字列リテラルでラップします

git tag -d "#ST002" or git tag -d '#ST002'

そうすれば削除されます。#を使ってタグ名を書き間違えた人の助けになれば幸いです。

于 2018-04-12T16:23:38.830 に答える
3

同じことを行う、作成したエイリアスを共有したかっただけです。

以下を~/.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)
于 2019-04-10T18:34:37.373 に答える