Skip to main content

Git 3.0부터 기본 브랜치가 “master”가 아닌 “main”으로 바뀐 이유와 적용 방법

Published 4 min readMarkdown

# 서론 – “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 정식 적용 |

  1. 포용성(Inclusivity) 강화

    • “master”라는 용어가 과거 노예제와 연관된 단어라는 인식이 확산되면서, 오픈소스 커뮤니티와 주요 기업들이 보다 중립적인 용어 사용을 권장했습니다.

    • Git 프로젝트 역시 이 흐름에 동참해 기본값을 “main”으로 바꾸기로 결정했습니다.

  2. 기술적 준비

    • 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:

    1. 레포지토리 페이지 → Settings → Branches → Default branch → main 선택

    2. 기존 master 브랜치를 삭제 (필요 시)

  • GitLab:

    1. 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 키워드를 포함하여 검색 엔진 최적화를 고려해 작성되었습니다.

No comments yet. Be the first to comment.

More from this blog