Git 3.0이 “main”을 기본 브랜치로 바꾼 이유와, 기존 프로젝트를 안전하게 마이그레이션하는 3단계
2025년 11월 21일
Git 3.0이 “main”을 기본 브랜치로 바꾼 이유와, 기존 프로젝트를 안전하게 마이그레이션하는 3단계
2024년 3월, Git 공식 릴리스에서 “master” 대신 “main”을 기본 브랜치로 지정했습니다. 이 변화는 Git이 더 포용적이고 현대적인 커뮤니티 기준을 반영하려는 의도에서 비롯되었습니다. 하지만 기존에 “master”를 사용하던 프로젝트는 이 변경으로 인해 브랜치 충돌, CI/CD 파이프라인 재구성 등 여러 이슈가 발생합니다.
Git 3.0이 “main”을 기본 브랜치로 바꾼 배경을 이해하면, 마이그레이션 과정을 보다 원활하게 진행할 수 있습니다. 이 글에서는 이 변화의 이유, 영향을 받은 핵심 영역, 그리고 실제 적용 가능한 3단계 마이그레이션 방법을 단계별로 안내합니다.
1️⃣ Git 3.0이 “main”을 선택한 이유
핵심 아이디어
- Git이 “master”라는 용어가 역사적으로 부정적인 연관성을 가질 수 있다는 점을 인식했습니다.
구체적 예시
- Git 2.30에서는 이미 “main”을 옵션으로 제공했으나, 3.0부터는 강제 기본값으로 전환했습니다.
실행 팁
- 문서 확인: Git 공식 문서(2024년 3월)에서 “main”을 기본값으로 명시한 부분을 찾아 보세요.
- 커뮤니티 피드백: GitHub, GitLab 등에서 “main” 도입 사례를 검색하면 실제 적용 예시를 찾을 수 있습니다.
- 교육 자료: 팀 내부 교육에 “main” 도입의 배경을 포함시키면, 개발자들이 변화를 수용하기 쉽습니다.
- 버전 관리: Git 3.0이 설치된 환경에서 INLINECODE0을 확인해 최신 버전을 사용하고 있는지 확인하세요.
- 정책 문서: 조직 내부 정책에 “default branch”를 명시해 두면, 향후 신규 레포지토리 생성 시 일관성을 유지할 수 있습니다.
“Git은 오픈 소스 커뮤니티의 가치를 반영하며, ‘master’라는 용어가 갖는 역사적 의미를 재고하고 있습니다.” – Git 공식 블로그, 2024
1.1 GitHub와 GitLab의 대응
GitHub는 2020년부터 “main”을 기본값으로 설정했고, GitLab은 2023년에 동일 정책을 도입했습니다. 이 두 플랫폼은 모두 레포지토리 생성 시 “main”을 자동으로 선택하고, 기존 레포지토리의 브랜치를 자동 변환해 주는 스크립트를 제공합니다. 그러나 자체 호스팅 GitLab이나 자체 Git 서버를 운영하는 경우, 수동으로 마이그레이션을 수행해야 합니다.
2️⃣ 기존 프로젝트에 미치는 실질적 영향
핵심 아이디어
- “master”를 기본 브랜치로 사용하던 프로젝트는 CI/CD, GitHub Actions, 서브모듈, 포크 등 여러 부분에서 호환성 문제가 발생합니다.
구체적 예시
- 한 스타트업은 GitHub Actions 워크플로에서 INLINECODE1가 INLINECODE2를 가리키도록 설정해 두었고, Git 3.0 이후에는 워크플로가 실패했습니다.
실행 팁
- CI/CD 스크립트 점검: 모든 파이프라인 파일(INLINECODE3, INLINECODE4)에서 INLINECODE5를 참조하는 부분을 찾아 INLINECODE6으로 교체하세요.
- 서브모듈 업데이트: INLINECODE7을 사용하는 경우, 서브모듈의 INLINECODE8 브랜치를 INLINECODE9으로 바꾸어 주어야 합니다.
- 포크된 레포지토리: 포크를 만든 후 INLINECODE10를 실행해 기본 브랜치를 자동으로 업데이트할 수 있습니다.
- 문서 및 README: INLINECODE11에서 “master”를 언급한 부분을 모두 “main”로 교체하고, 문서 링크를 업데이트하세요.
- 협업 도구 연동: Jira, Trello, Slack 등과 연동된 Git 연동 설정에서도 브랜치 이름을 확인해 주세요.
2.1 자동 변환 도구 활용
GitHub에서는 INLINECODE12를 사용한 수동 변환 대신 INLINECODE13 명령을 통해 로컬에서 바로 이름을 바꿀 수 있습니다. 리모트에서는 INLINECODE14로 INLINECODE15 브랜치를 삭제하고, INLINECODE16으로 새 브랜치를 푸시하면 됩니다.
CODEBLOCK0
“Git 3.0 이후 ‘master’는 더 이상 기본값이 아니며, ‘main’으로의 전환은 Git 생태계 전반에 걸쳐 일관성을 높입니다.” – Git 공식 문서, 2024
3️⃣ 안전하고 신속한 마이그레이션을 위한 3단계
핵심 아이디어
- 변환 과정에서 데이터 손실을 방지하고, 팀원 모두가 동시에 마이그레이션을 진행할 수 있도록 체계적인 절차를 마련합니다.
구체적 예시
- 한 대형 기업은 500개 이상의 레포지토리를 한 번에 마이그레이션하면서, 단계별 로드맵을 수립해 2주 내에 전환을 완료했습니다.
실행 팁
- 준비 단계
– 모든 팀원에게 브랜치 명 변경 공지 – 현재 레포지토리의 INLINECODE17가 INLINECODE18인지 확인 (INLINECODE19) – 백업 스크립트 준비 (INLINECODE20)
- 변환 단계
– 로컬에서 INLINECODE21 실행 – 리모트에 INLINECODE22 푸시 (INLINECODE23) – 리모트에서 INLINECODE24 삭제 (INLINECODE25) – CI/CD, 서브모듈, 포크 등 모든 연동 설정을 INLINECODE26으로 업데이트
- 검증 단계
– INLINECODE27 후 INLINECODE28로 모든 브랜치가 정상인지 확인 – CI/CD가 정상적으로 실행되는지 테스트 – 서브모듈 경로가 올바르게 업데이트되었는지 확인 – 팀원들이 로컬에서 INLINECODE29 시 INLINECODE30 브랜치가 자동으로 추적되는지 검증
3.1 마이그레이션 체크리스트
- [ ] 백업: INLINECODE31으로 전체 레포지토리 백업
- [ ] 브랜치 이름: INLINECODE32
- [ ] 리모트 업데이트: INLINECODE33, INLINECODE34
- [ ] CI/CD 설정: 워크플로 파일에서 INLINECODE35를 INLINECODE36으로 교체
- [ ] 서브모듈: INLINECODE37 및 INLINECODE38
- [ ] 포크: INLINECODE39
- [ ] 문서: INLINECODE40, INLINECODE41, INLINECODE42 등에서 INLINECODE43를 INLINECODE44으로 교체
- [ ] 테스트: 빌드, 테스트, 배포 파이프라인 정상 동작 여부 확인
결론
Git 3.0이 기본 브랜치를 “main”로 바꾼 것은 포용성과 현대화의 의도에서 비롯되었습니다. 이 변화는 기존 프로젝트에 영향을 주지만, 체계적인 마이그레이션 절차를 따르면 손쉽게 전환할 수 있습니다. 지금 바로 백업을 만들고, 로컬에서 브랜치 이름을 바꾼 뒤 리모트에 푸시해 보세요. 팀 전체에 공지하면, 모두가 동일한 기준으로 작업할 수 있습니다.