Git 3.0부터 기본 브랜치가 “master”가 아닌 “main”으로 바뀐 이유와 적용 방법
# 서론 – “master”와 “main”, 왜 바뀌었을까?
Git을 처음 배우는 개발자라면 “master” 라는 기본 브랜치를 익숙하게 사용했을 겁니다. 그런데 Git 3.0부터는 새 저장소를 만들 때 기본 브랜치 이름이 “main” 으로 자동 설정됩니다.
이 변화가 왜 일어났는지, 기존 프로젝트에 어떤 영향을 미치는지, 그리고 바로 적용할 수 있는 방법은 무엇인지 궁금하지 않으신가요?
본 글에서는 Git 기본 브랜치가 바뀐 배경, main 브랜치와 master의 차이, 그리고 실제 프로젝트에 적용하는 구체적인 절차를 초보자도 이해하기 쉬운 흐름으로 정리합니다.
# 본론
# 1️⃣ Git 기본 브랜치 명명 규칙 변경 배경
| 구분 | 기존 | 현재 (Git 3.0) |
|------|------|---------------|
| 기본 브랜치 이름 | master | main |
| 변경 시점 | 2022년 8월 (Git 2.28부터 옵션 제공) | 2024년 3월, Git 3.0 정식 적용 |
포용성(Inclusivity) 강화
“master”라는 용어가 과거 노예제와 연관된 단어라는 인식이 확산되면서, 오픈소스 커뮤니티와 주요 기업들이 보다 중립적인 용어 사용을 권장했습니다.
Git 프로젝트 역시 이 흐름에 동참해 기본값을 “main”으로 바꾸기로 결정했습니다.
기술적 준비
Git 2.28부터
init.defaultBranch설정 옵션이 도입돼, 사용자가 원하는 기본 브랜치명을 자유롭게 지정할 수 있었습니다.Git 3.0에서는 이 옵션을 기본값 “main”으로 설정해 배포했습니다.
SEO 키워드: Git 기본 브랜치
# 2️⃣ “main”과 “master”는 실제로 다를까?
기능적으로는 동일
- Git 내부에서는 브랜치 이름이 단순히 레퍼런스(참조)일 뿐이며, “main”이든 “master”든 커밋 히스토리, 병합 방식 등에 차이가 없습니다.
프로젝트 설정에 미치는 영향
CI/CD 파이프라인, 배포 스크립트, 문서화된 워크플로우에서 브랜치 이름을 하드코딩한 경우, 이름이 바뀌면 오류가 발생할 수 있습니다.
예를 들어, GitHub Actions 워크플로우 파일에
on: push: branches: [ master ]와 같이 명시돼 있으면, 새 브랜치가 “main”일 경우 트리거되지 않습니다.
협업 문화와 가독성
- “main”이라는 이름은 프로젝트의 주된(메인) 개발 라인이라는 직관적인 의미를 전달해, 팀원 간 커뮤니케이션이 더 명확해집니다.
SEO 키워드: main 브랜치
# 3️⃣ 기존 레포지토리를 “main”으로 전환하는 단계별 가이드
아래 절차는 초보자도 따라 할 수 있는 가장 간단한 방법을 제시합니다.
# 3‑1. 로컬 브랜치 이름 변경
bash
# 현재 master 브랜치가 체크아웃된 상태에서
git branch -m master main
# 3‑2. 원격 저장소에 새로운 브랜치 푸시
bash
git push -u origin main
# 3‑3. 원격 기본 브랜치 설정 변경 (GitHub, GitLab 등)
GitHub:
레포지토리 페이지 → Settings → Branches → Default branch → main 선택
기존 master 브랜치를 삭제 (필요 시)
GitLab:
- Settings → Repository → Default branch → main 선택
# 3‑4. 로컬에 남아 있는 master 브랜치 삭제
bash
git push origin --delete master # 원격 삭제
git branch -d master # 로컬 삭제
# 3‑5. CI/CD, 배포 스크립트 업데이트
.github/workflows/*.yml,Jenkinsfile,Dockerfile등에서master라는 문자열을main으로 교체합니다.검색·바꾸기(Find & Replace) 도구를 활용하면 실수 없이 일괄 수정이 가능합니다.
TIP: 변경 후
git fetch --prune명령으로 오래된 레퍼런스를 정리하면 깔끔합니다.
# 4️⃣ 새 프로젝트에서 “main”을 기본으로 시작하기
Git 3.0을 설치한 이후라면, 별다른 설정 없이 git init 명령만으로 자동으로 “main” 브랜치가 생성됩니다.
만약 이전 버전 Git을 사용 중이라면, 전역 설정을 추가해 동일한 효과를 얻을 수 있습니다.
bash
git config --global init.defaultBranch main
위 명령을 실행하면, 전역적으로 모든 새 레포지토리에서 기본 브랜치가 “main”이 됩니다.
# 5️⃣ “main” 전환 시 흔히 겪는 오류와 해결책
| 오류 상황 | 원인 | 해결 방법 |
|-----------|------|-----------|
| fatal: ambiguous argument 'master': unknown revision or path not in the working tree. | 로컬에 아직 master 브랜치가 남아 있지 않음 | git checkout -b main origin/main 으로 새 브랜치 생성 |
| CI 파이프라인이 트리거되지 않음 | 워크플로우 파일에 master 고정 | 워크플로우 파일을 main 으로 수정 후 커밋 |
| Pull Request가 자동 병합되지 않음 | 기본 브랜치가 변경돼 PR 대상이 달라짐 | PR 대상 브랜치를 main 으로 변경하거나, 기본 브랜치를 재설정 |
# 결론 – 지금 바로 “main” 브랜치를 적용해 보세요!
Git 3.0에서 “main” 으로 기본 브랜치를 바꾸는 것은 단순히 이름을 바꾸는 것이 아니라, 보다 포용적이고 직관적인 개발 문화로 나아가는 첫걸음입니다.
1️⃣ 새 프로젝트라면 git init만으로 바로 “main”을 사용해 보세요.
2️⃣ 기존 레포지토리는 위에서 소개한 5단계 가이드를 따라 순차적으로 전환하면, 별다른 충돌 없이 최신 흐름에 맞출 수 있습니다.
행동 유도: 지금 바로 로컬 터미널을 열고
git config --global init.defaultBranch main명령을 실행해 보세요. 그리고 팀원들에게도 공유해 모두가 같은 브랜치 정책을 따를 수 있도록 해주세요!
이 글은 “Git 기본 브랜치”, “main 브랜치”, “master와 main 차이”라는 SEO 키워드를 포함하여 검색 엔진 최적화를 고려해 작성되었습니다.
Comments
Join the discussionNo comments yet. Be the first to comment.