[Git] タグ名を変更する

うっかり間違った名前のタグをつけた場合などに、後から変更する方法です。手順としては新しいタグを追加し、古いタグを削除する流れです。

ローカルを変更

新しいタグを追加

git tag [新タグ名] [旧タグ名] で旧タグ名と同じコミットに、新タグ名をつけることができます。

$ git tag
v2.0.0

$ git tag v2.0.1 v2.0.0

タグの一覧を表示すると、先ほど追加したタグが増えていることがわかります。

$ git tag
v2.0.0
v2.0.1 ←増えた!

古いタグを削除

つぎに旧タグを削除します。

$ git tag -d v2.0.0
Deleted tag 'v2.0.0' (was 4d59bb8)

タグの一覧を表示し消えていればローカルの作業は完了です。

$ git tag
v2.0.1

リモートを変更

次にpushしてリモートに反映するのですが、少し工夫が必要です。 新しくタグを追加した際には、pushする際にオプションを指定しないと送信されません

$ git push --tags
Total 0 (delta 0), reused 0 (delta 0)
To /repos/test.git
* [new tag]         v2.0.1 -> v2.0.1

最後にリモートのタグを削除するのですが、こちらはブランチを削除する時と同様のコマンド git push origin :[旧タグ名] になります。コロン(:)を忘れずに。

$ git push origin :v2.0.0
To /repos/test.git
 - [deleted]         v2.0.0

念のためリモートのタグの一覧を表示して確認しておきましょう。

$ git ls-remote --tags
From /repos/test.git
4d59bb84f90ff9ad23f05044a85930bf0eeb36fd        refs/tags/v2.0.1
34dd42238d58dfcece4a1a78a4ca6145c6f38725        refs/tags/v2.0.1^{}

これで変更が完了しました。一発でリネームできるコマンドがあればいいんですけどねw

参考