症状
作成したGitタグを削除したいが、ローカルとリモートの両方から消す方法がわからない
結論:まずこれを確認
- ローカル削除:
git tag -d タグ名 - リモート削除:
git push origin --delete タグ名 - 削除前に
git tag -lで対象タグを確認する
操作フロー
flowchart TD
A[タグを削除したい] --> B{削除対象を確認}
B --> C[git tag -l でタグ一覧表示]
C --> D{ローカルのみ削除?}
D -->|Yes| E[git tag -d タグ名]
D -->|No| F{リモートも削除?}
F -->|Yes| G[git tag -d タグ名]
G --> H[git push origin --delete タグ名]
E --> I[削除完了を確認]
H --> I
I --> J[git tag -l で確認]
よくある原因
- タグ名を間違えて作成した - タイポや命名規則のミス
- リリースを取り消すことになった - タグを付けたコミットが不適切だった
- 古いタグを整理したい - 不要になったタグの掃除
- 同じタグ名を別のコミットに付け直したい - 一度削除してから再作成が必要
- CI/CDパイプラインで誤ってタグが作成された - 自動化による意図しないタグ
- テスト用のタグを消し忘れていた - 開発中に作った一時的なタグ
操作手順
ステップ1: 削除対象のタグを確認する
# 全タグを一覧表示
git tag -l
# 特定のパターンに一致するタグを表示(例: v1.* で始まるタグ)
git tag -l "v1.*"
# タグの詳細情報を確認
git show タグ名
🔍 チェックポイント: 削除したいタグ名が正しく表示されていることを確認
ステップ2: ローカルのタグを削除する
# ローカルのタグを削除
git tag -d v1.0.0
実行結果の例:
Deleted tag 'v1.0.0' (was abc1234)
🔍 チェックポイント: Deleted tag と表示されれば成功。括弧内はタグが指していたコミットのハッシュ
ステップ3: リモートのタグを削除する
# リモートのタグを削除(方法1: 推奨)
git push origin --delete v1.0.0
# リモートのタグを削除(方法2: 古い書き方)
git push origin :refs/tags/v1.0.0
実行結果の例:
To github.com:username/repo.git
- [deleted] v1.0.0
🔍 チェックポイント: [deleted] と表示されれば成功
ステップ4: 削除を確認する
# ローカルのタグを確認
git tag -l
# リモートのタグを確認
git ls-remote --tags origin
🔍 チェックポイント: 削除したタグ名が一覧に表示されなければ完了
ステップ5: 他の人の環境からタグを削除する(必要な場合)
他のメンバーがすでにタグを取得している場合、各自で以下を実行する必要がある:
# 削除されたリモートタグをローカルからも削除
git fetch --prune --prune-tags
NG行動(やってはいけないこと)
- 確認せずに削除する - 間違ったタグを消すと、そのタグが指していたコミットの特定が困難になる
- リリース済みのタグを無断で削除する - チームメンバーや外部ユーザーが参照している可能性がある
- 削除と同時に同名タグを別コミットに付ける - 他の人の環境でタグの不整合が発生する
git push --tags --forceを使う - 意図しないタグの上書きが発生するリスクがある
よくある質問(FAQ)
Q1: リモートのタグだけ削除してローカルは残したい場合は?
A: リモート削除コマンドだけを実行する。ローカルのタグはそのまま残る。
git push origin --delete v1.0.0
Q2: 複数のタグを一度に削除したい場合は?
A: ローカルとリモートそれぞれで複数指定できる。
# ローカルの複数タグを削除
git tag -d v1.0.0 v1.0.1 v1.0.2
# リモートの複数タグを削除
git push origin --delete v1.0.0 v1.0.1 v1.0.2
Q3: 削除したタグを復元できる?
A: タグが指していたコミットハッシュがわかれば復元可能。削除時に表示される (was abc1234) の部分を控えておく。
# コミットハッシュを指定してタグを再作成
git tag v1.0.0 abc1234
関連するトラブル
準備中
解決しない場合
- Git公式ドキュメント - git-tag
- 確認すべきログ:
git reflogでタグが指していたコミットを探す - 次に調べるキーワード: “git tag 復元”, “git reflog”, “git push tags”