브랜치가 필요한 이유
새 기능을 개발하다가 잘못되면 어떻게 될까요? main에 직접 작업했다면 원본이 망가집니다.
브랜치는 이 문제를 해결합니다. 원본(main)은 항상 안정적으로 유지하고, 새 작업은 별도의 복사본(브랜치)에서 합니다. 만족스러우면 합치고, 마음에 안 들면 그냥 버리면 됩니다.
main ─────────────────────────────── (항상 안정적)
\ /
feature ──── 작업 ──── 완성 (실험적)
브랜치 만들기
GitHub 웹에서 브랜치를 만드는 방법입니다.
- 저장소 메인 페이지에서 파일 목록 위 branch 선택기 클릭 (기본값:
main) - 텍스트 박스에 새 브랜치 이름 입력:
add-profile - Create branch: add-profile from 'main' 클릭
브랜치 이름 규칙:
- 소문자, 하이픈(-) 사용
- 무엇을 하는 브랜치인지 알 수 있게:
fix-typo,add-dark-mode,update-readme
브랜치에서 파일 수정하기
브랜치를 만든 뒤 파일을 수정하면 그 변경이 브랜치에만 저장됩니다.
add-profile브랜치로 전환되어 있는지 확인 (branch 선택기에add-profile표시)README.md클릭 → 연필 아이콘 클릭- 내용 추가:
## 나에 대해
- 이름: 홍길동
- 관심사: 개발, 독서, 요리
- 목표: GitHub으로 협업하기
- Commit changes → 메시지:
docs: 프로필 정보 추가 - Commit directly to the
add-profilebranch 선택
브랜치 비교하기
main과 add-profile이 어떻게 다른지 확인해봅니다.
- 저장소 페이지에서 branch 선택기를
main으로 바꾸기 README.md내용 확인 → 내가 추가한 내용이 없습니다- 다시
add-profile로 전환 → 내용이 있습니다
브랜치끼리 독립적입니다.
브랜치 병합하기
작업이 완료되면 main에 합칩니다. 이 과정은 다음 레슨에서 Pull Request로 배울 예정입니다. 여기서는 간단하게 직접 병합하는 방법을 알아봅니다.
- 저장소 상단 Pull requests 탭 클릭
- New pull request 클릭
- base:
main← compare:add-profile설정 확인 - 변경 사항(diff) 미리보기 확인
- Create pull request → 메시지 입력 → Merge pull request
병합 후 main에도 내 변경사항이 반영됩니다.
"왜?" — 팀에서 브랜치가 필수인 이유
혼자 작업하면 브랜치가 없어도 됩니다. 하지만 팀에서는 필수입니다.
팀원 A가 로그인 기능을 개발하는 동안, 팀원 B는 결제 기능을 개발합니다. 둘 다 main에 직접 커밋한다면 서로의 코드가 충돌합니다.
브랜치를 사용하면:
- A는
feature/login브랜치에서 작업 - B는
feature/payment브랜치에서 작업 - 각자 완성하면 검토 후
main에 병합
충돌 없이 병렬로 개발할 수 있습니다.
심화 학습
브랜치 삭제하기
병합 완료된 브랜치는 정리합니다. 불필요한 브랜치가 쌓이면 관리가 어려워집니다.
- Pull Request가 병합되면 Delete branch 버튼이 나타납니다
- 또는 저장소 Code 탭 → N branches 링크 → 삭제할 브랜치 옆 휴지통 아이콘
브랜치를 삭제해도 커밋 이력은 남아 있습니다. 언제든지 복원할 수 있습니다.
기본 브랜치 이름 — main vs master
과거에는 기본 브랜치 이름이 master였습니다. 2020년부터 GitHub은 새 저장소의 기본 브랜치를 main으로 변경했습니다.
오래된 저장소나 튜토리얼에서 master를 볼 수 있습니다. 기능은 동일하고, 이름만 다릅니다.
Settings → Default branch에서 이름을 변경할 수 있습니다.
my-first-repo에add-profile브랜치를 만드세요.- 해당 브랜치에서
README.md를 수정하고 커밋하세요. main브랜치로 돌아와서 변경사항이 없는 것을 확인하세요.
Q1. 브랜치(Branch)를 사용하는 주된 이유는?
- A) 저장소를 여러 계정에서 공유하기 위해
- B) 원본(main)을 건드리지 않고 새 작업을 안전하게 진행하기 위해
- C) 파일을 더 빠르게 업로드하기 위해
- D) 커밋 메시지를 자동으로 생성하기 위해