Github default branch 변경하기 (master to main)

오늘 도구만들 떄 쓸 라이브러리를 만들어두려고 github repository를 추가하려 했더니 아래와 같은 메시지가 발생했습니다.

This will set  main  as the default branch. Change the default name in your settings.

제 기억엔 github에서 생성한 repo에서의 default branch는 master로 기억나는데, 뭔가 변경이 있었던 것 같습니다. 오늘은 github의 default branch 정책에 대해 알아보고, 각 계정별 default branch를 설정하는 방법에 대해 정리해봅니다.

Github branch 정책 변화

저도 뭔가 이상해서 찾아봤더니 제 repo 중 일부는 master, 일부는 main을 default branch로 사용하고 있더군요. 사실 크게 의미를 두고 있진 않아서 중요하게 생각하지 않았는데 어느 시점부터 변경됬다는 것이 느껴졌습니다.

이는 Black Lives Matter로 인해 master/slave 등 IT쪽에서도 단어 관련된 이야기들이 나올 때 github에서도 이에 맞춰 변경 했다고 하네요. 전 직업 특성 상 black-list/white-list 를 많이 사용했다 보니 allow-list/deny-list로 부르려고 노력만 했지 정작 github branch 정책도 이에따라 바뀌었다는 걸 느끼지도 못했었네요.

Change default branch

branch 정책은 각 계정 별로 설정이 가능하며, 설정 시 이후에 생성되는 모든 branch는 설정한 branch 명으로 생성됩니다. 작년 10월쯤 이후부턴 default 값으로 main으로 바뀌었을거에요.

설정은 https://github.com/settings/repositories 페이지에 접근하셔서 변경하시면 됩니다.

기존 Branch는?

솔직히 기존에 만들어졌던 repo도 default branch도 master => main 으로 바꾸고 싶으실 것 같네요. 다행히도 github에선 이런 사용자들을 위해 master branch가 삭제된 경우 main branch로 자동으로 redirect 해준다고 하네요. 또한 github page도 기존에 master에서만 배포 가능했던 정책이 어떤 branch에서도 배포될 수 있도록 변경되었습니다. (github page는 branch 변경 시 순단이 잠깐 발생합니다. 참고요.)

git command를 통한 변경

변경하는 방법은 -m flag를 통해 master branch를 mian branch로 이름을 변경하여 push 한 후 기존 master branch를 삭제해주시면 됩니다.

git branch -m master main
git push -u origin main

push 후 github repo의 settings에 branch에 가시면 default branch 변경 메뉴가 있습니다(우측)

위에서 변경하면 이미지와 같이 master -> main으로 branch가 변경됩니다.

github 웹 페이지를 통한 변경

사실 훨씬 쉽고 간단한 방법이 있는데요, 그냥 github repo의 settings > branch 에서 아래 이미지처럼 edit 아이콘을 눌러 rename 해버리면 됩니다.

이후 local clone 경로에선 -m으로 branch를 변경하고 fetch 후 remote를 설정하여 변경한 branch를 따라가도록 설정해주면 됩니다.

git branch -m master main
git fetch origin
git branch -u origin/main main
git remote set-head origin -a

저도 대다수 프로젝트(Private까지)를 거의 다 변경했네요 :D

References