うっかり間違った名前のタグをつけた場合などに、後から変更する方法です。手順としては新しいタグを追加し、古いタグを削除する流れです。
ローカルを変更
新しいタグを追加
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