Git - ブランチ名を変更する方法

gitローカルブランチの名前を変更し、Remoteリポジトリで変更されたブランチ名を反映する方法を紹介します。

1. ローカルブランチ名の変更

-mまたは-Mオプションを使用して、どのブランチの名前を新しい名前に変更できます。

git branch (-m | -M) [<oldbranch>] <newbranch>

たとえば、以下のように dev ブランチを new_dev ブランチに名前を変更できます。

$ git branch
  dev
* master

$ git branch -m dev new_dev

$ git branch
* master
  new_dev

1.1 branch命令の-mと-Mオプションの違い

-m--move の略で、ブランチの名前を変更します。すでに存在するブランチの名前に変更しようとすると、エラーで失敗します。

$ git branch
  dev
* master
  new_dev

$ git branch -m dev new_dev
fatal: A branch named 'new_dev' already exists.

$ git branch
  dev
* master
  new_dev

一方、-M--move --force.の略で、ブランチの名前を変更するときにすでに存在するブランチがあっても無視して変更します。

$ git branch
  dev
* master
  new_dev

$ git branch -M dev new_dev

$ git branch
* master
  new_dev

2. Remoteリポジトリへの古いブランチの削除と新しいブランチの登録

ローカルでold branchをnew branchに変更した場合は、Remoteリポジトリにも変更を適用する必要があります。

2.1 Remoteからold branchを削除する

old branchがnew branchに名前が変更されたため、old branchが削除され、new branchが追加されたことがわかります。

以下のように git push origin :[old branch] コマンドでローカルから削除されたold branchをRemoteからも削除できます。

$ git branch -a
* master
  old_branch
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/origin/old_branch

$ git branch -m old_branch new_branch

$ git branch -a
* master
  new_branch
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/origin/old_branch

$ git branch -a
* master
  new_branch
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/origin/old_branch

$ git push origin :old_branch
To github.com:codechacha/algorithms.git
 - [deleted]         old_branch

$ git branch -a
* master
  new_branch
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

2.2 Remoteへの新しいブランチの登録

次のように git push --set-upstream origin [new branch] コマンドで new branch を Remote に登録できます。

$ git branch -a
* master
  new_branch
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

$ git push --set-upstream origin new_branch
Total 0 (delta 0), reused 0 (delta 0)
remote:
remote: Create a pull request for 'new_branch' on GitHub by visiting:
remote:      https://github.com/codechacha/algorithms/pull/new/new_branch
remote:
To github.com:codechacha/algorithms.git
 * [new branch]      new_branch -> new_branch
Branch 'new_branch' set up to track remote branch 'new_branch' from 'origin'.

$ git branch -a
* master
  new_branch
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/origin/new_branch
codechachaCopyright ©2019 codechacha