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 등록

로컬에서 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에 new branch 등록

다음과 같이 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
Loading script...
codechachaCopyright ©2019 codechacha