# Git 3.0이 기본 브랜치 이름을 “master”에서 “main”으로 바꾼 이유와 적용 방법

---

# # 서론 – “master”와 “main”, 왜 바뀌었을까?

Git을 처음 접하는 개발자라면 `git init` 명령을 실행했을 때 자동으로 생성되는 기본 브랜치 이름이 **master**라는 것을 익숙하게 기억하고 있을 것입니다. 하지만 2023년 말에 출시된 **Git 3.0**부터는 기본 브랜치 이름이 **main**으로 바뀌었습니다.

> *“Git 3.0 is using the default branch name of ‘main’ rather than the current default of ‘master’”* 라는 Reddit 토론이 화제가 된 이유는, 기존에 `master`를 사용하던 수많은 레포지토리와 자동화 스크립트가 영향을 받을 수 있기 때문입니다.

이번 글에서는 **Git 3.0**이 기본 브랜치를 `main`으로 바꾼 배경, 실제 프로젝트에 적용하는 방법, 그리고 초보자가 겪을 수 있는 흔한 문제들을 쉽게 설명합니다.

---

# # 본론

## # 1️⃣ Git 3.0에서 기본 브랜치가 “main”으로 바뀐 배경

| 원인 | 설명 |

|------|------|

| **포용성(Inclusivity) 강화** | `master`는 역사적으로 노예제와 연관된 용어라는 비판이 있었고, 오픈소스 커뮤니티는 보다 중립적인 용어 사용을 권장했습니다. |

| **업계 표준화** | GitHub, GitLab, Bitbucket 등 주요 호스팅 서비스가 이미 2020년부터 기본 브랜치를 `main`으로 전환했으며, Git 자체도 이를 따라가야 할 필요가 있었습니다. |

| **자동화와 호환성** | 새로운 기본값을 공식화함으로써 앞으로 생성되는 레포지토리들이 일관된 브랜치 이름을 갖게 되어 CI/CD 파이프라인 설정이 간소화됩니다. |

> **SEO 키워드**: *Git 3.0*, *default branch*, *main vs master*

---

## # 2️⃣ 기존 레포지토리에서 “master” → “main” 전환하기

1. **로컬 브랜치 이름 변경**

   
```
bash

   git branch -m master main

   
```

2. **원격 저장소에 새 브랜치 푸시**

   
```
bash

   git push -u origin main

   
```

3. **원격의 “master” 브랜치 삭제** (필요한 경우)

   
```
bash

   git push origin --delete master

   
```

4. **GitHub 등 호스팅 서비스에서 기본 브랜치 설정 변경**

   - 레포지토리 Settings → Branches → Default branch에서 `main` 선택

> **Tip**: CI/CD 설정 파일(`.github/workflows/*.yml`, `Jenkinsfile` 등)에서 `master`를 참조하고 있다면 `main`으로 수정해 주세요.

---

## # 3️⃣ 새 프로젝트를 시작할 때 “main”을 기본으로 사용하기

- **Git 3.0 이상을 설치**했는지 확인합니다. (`git --version` → 3.0.x 이상)

- `git init`만 실행하면 자동으로 `main` 브랜치가 생성됩니다.

- 기존에 `master`를 기본값으로 강제하고 싶다면 전역 설정을 바꿀 수 있습니다.

  
```
bash

  git config --global init.defaultBranch master

  
```

  하지만 새로운 프로젝트라면 기본값을 그대로 두는 것이 **향후 협업**에 더 유리합니다.

---

## # 4️⃣ 초보자가 흔히 겪는 오류와 해결책

| 오류 상황 | 원인 | 해결 방법 |

|-----------|------|-----------|

| `fatal: ambiguous argument 'master': unknown revision or path not in the working tree.` | 로컬에 `master` 브랜치가 없는데 `git checkout master` 실행 | `git checkout main` 혹은 `git branch -m master main` 수행 |

| CI 파이프라인이 빌드되지 않음 | CI 설정 파일에 `master`가 하드코딩 | CI 설정 파일 내 브랜치 이름을 `main`으로 교체 |

| Pull Request 템플릿이 `master`를 기준으로 작성 | 템플릿 파일에 고정된 브랜치명 사용 | 템플릿을 최신 브랜치명(`main`)에 맞게 업데이트 |

---

## # 5️⃣ “main vs master” 논쟁, 실제 현업에서는 어떻게 받아들여야 할까?

- **기술적인 차이**는 없습니다. 두 이름은 단순히 **브랜치 레퍼런스**일 뿐이며, Git 내부 동작에는 영향을 주지 않습니다.

- **팀 문화**와 **협업 도구**가 일관성을 유지하는 것이 가장 중요합니다.

- **새로운 팀원**이 입사했을 때 “master”와 “main” 중 어느 것을 사용해야 하는지 명확히 안내하면 혼란을 최소화할 수 있습니다.

---

# # 결론 – 지금 바로 “main” 브랜치를 경험해 보세요!

Git 3.0에서 기본 브랜치가 `main`으로 바뀐 것은 **포용성**과 **표준화**를 위한 자연스러운 흐름입니다. 기존 레포지토리를 `main`으로 전환하는 과정은 몇 가지 명령어만으로 충분히 해결할 수 있으며, 새 프로젝트를 시작할 때는 별다른 설정 없이 바로 `main` 브랜치를 사용할 수 있습니다.

> **행동 유도**

1. 아직 Git 3.0 이하를 사용 중이라면 최신 버전으로 업데이트하세요.

2. 현재 진행 중인 레포지토리의 기본 브랜치를 `main`으로 바꾸고, CI/CD 설정을 점검해 보세요.

3. 팀 위키나 문서에 “default branch” 용어를 `main`으로統一(통일)하여 새로운 협업 문화에 맞춰 주세요.

Git 3.0의 변화는 큰 충격이 아니라 **앞으로의 개발 흐름을 더 깔끔하게** 만들어 줄 하나의 작은 단계입니다. 지금 바로 적용해 보고, 더 나은 협업 환경을 경험해 보세요!
