はじめに
ブランチ名を間違えた/後から変更したいときの手順
状況としては、プッシュ直後でローカルとリモートに差分がない状態
ローカルのブランチ名を変更
git branch -m
を使用してブランチ名を変更する。
オプション -m
はブランチ名の変更
引数を1つ指定した場合
引数1つ
$ git branch -m NEW_BRANCH_NAME
- カレントブランチ名を、引数で指定したブランチ名に変更する
- あらかじめ、名前変更したいブランチにcheckoutしておく必要がある
引数を2つ指定した場合
引数2つ
$ git branch -m OLD_BRANCH_NAME NEW_BRANCH_NAME
- 1つ目の引数で指定したブランチの名前を、2つ目の引数で指定したブランチ名に変更する
- カレントブランチに関わらず指定したブランチの名前を変更できる
既に存在しているブランチ名を指定した場合はエラーとなるが、 -M
オプションを使用することで強制的にブランチ名を変更することが可能 (もともとあったブランチは消える)
参考
Git - git-branch Documentation
リモートブランチに反映
ローカルで名前変更したブランチをリモートにプッシュする。
$ git push -u origin NEW_BRANCH_NAME
このとき、リモートの OLD_BRANCH_NAME のブランチ名が変更されているわけではなく、NEW_BRANCH_NAME という別名のブランチが新規作成されていることに注意。
つまり、リモートには変更前のブランチが残ってしまっている。
リモートに残った変更前のブランチを削除
$ git push origin --delete 変更前のブランチ名
省略形のコマンドは以下
省略形
$ git push origin :変更前のブランチ名
上記のコマンドで、リモートに残った OLD_BRANCH_NAME が削除される
参考
GitHub上でブランチ名を変更する
基本的にはローカルから先に変更するよりも↓の方法が単純でわかりやすい
GitHub上でブランチ名を変更した後、ローカルの対象ブランチで以下のコマンドを実行
# リモートで変更したブランチ名に合わせて対象のブランチ名を変更する。
$ git branch -m OLD-BRANCH-NAME NEW-BRANCH-NAME
# リモートの最新の状態をローカルに取得する
$ git fetch origin
# ブランチのリモート追跡ブランチを更新する
$ git branch -u origin/NEW-BRANCH-NAME NEW-BRANCH-NAME
# remote/origin/HEAD の情報をリモートから取得し、ローカルに同期する
$ git remote set-head origin -a