打ったタグ、消していいの?

v1.0.0 を打って push して、ホッと一息ついた直後。「あれ、初期化処理にバグがある…」と気づく。とっさに「タグを消して、直してから打ち直そう」と思ったことはないだろうか。技術的には消せる。ローカルなら git tag -d v1.0.0、リモートなら git push origin --delete v1.0.0。コマンドは通る。だが、これは現場ではほぼ禁じ手だ。
理由はシンプルで、v1.0.0 はすでに「あなた以外の世界」に出てしまっているからだ。同僚は git fetch で取り込み済みかもしれないし、CI/CD パイプラインがそのタグを参照してビルド・デプロイしているかもしれない。後日「v1.0.0 のバグを直して」と言われたときに、消して打ち直した「中身が違う v1.0.0」が世の中に流通していると、誰がどの v1.0.0 を見ていたのか追えなくなる。リリースタグは「ある時点のコードのスナップショット」で、それが書き換わるとリリース履歴という指差し確認が崩れる。
正解は、消さずに次のバージョンを打ち直すことだ。リリース後に見つかったバグ修正なら、セマンティックバージョニングの PATCH を 1 つ進めて v1.0.1 を打つ。これで履歴には v1.0.0 → v1.0.1(hotfix) と残り、あとから「あのバグはいつ直ったのか」がたどれる。PATCH 部分はまさにこういう「リリース後の修正」のためにある。タグは消すものではなく、積み重ねるものだと覚えておきたい。
