Branch란

한 줄 요약

독립적인 작업 공간을 만들어 여러 기능을 동시에 개발할 수 있게 해주는 기능

개요

Branch(브랜치)는 Commit 히스토리에서 분기하여 독립적인 작업 공간을 만드는 것입니다. 마치 평행 우주처럼 각 브랜치에서 다른 작업을 진행할 수 있습니다.

핵심 포인트

  • 브랜치는 특정 커밋을 가리키는 포인터
  • 새 커밋을 만들면 현재 브랜치가 자동으로 이동
  • 브랜치 생성/전환이 매우 빠름 (포인터만 바꾸면 되므로)
  • 여러 기능을 동시에 개발할 때 필수

시각적 이해

브랜치 없이 작업

[c1]───▶[c2]───▶[c3]───▶[c4]  ← 모든 작업이 한 줄

새 기능 개발 중 긴급 버그를 수정해야 한다면? 섞이게 됩니다.

브랜치로 작업

                      main
                        │
                        ▼
[c1]───▶[c2]───▶[c3]───▶[c4]
              │
              └───▶[c5]───▶[c6]
                            ▲
                            │
                         feature
  • main: 안정적인 코드 유지
  • feature: 새 기능 개발 중
  • 각각 독립적으로 작업 가능!

왜 브랜치가 필요한가?

실제 시나리오

  1. 기능 개발 중 긴급 버그 발생

    • 브랜치 없이: 개발 중인 코드와 버그 수정이 섞임
    • 브랜치 사용: main으로 돌아가서 버그만 수정
  2. 여러 기능 동시 개발

    • 각 기능을 별도 브랜치에서 개발
    • 완성된 기능만 main에 합침
  3. 실험적인 시도

    • 새 브랜치에서 실험
    • 실패하면 브랜치 삭제, 성공하면 병합

브랜치의 가벼움

Git 브랜치는 매우 가볍습니다.

  • 브랜치 = 40바이트 파일 (커밋 해시 저장)
  • 생성/삭제/전환이 거의 즉각적
  • 파일을 복사하지 않음!
# 브랜치 생성: 0.001초
git branch feature
 
# 브랜치 전환: 0.01초
git switch feature

브랜치 종류 (관례)

브랜치용도
main / master배포 가능한 안정 버전
develop개발 중인 다음 버전
feature/*새 기능 개발
bugfix/* / hotfix/*버그 수정
release/*릴리즈 준비

예시

main
├── develop
│   ├── feature/login
│   ├── feature/signup
│   └── feature/dashboard
├── hotfix/security-patch
└── release/v1.2.0

기본 워크플로우

# 1. 새 기능 브랜치 생성
git switch -c feature/login
 
# 2. 작업 및 커밋
git add .
git commit -m "feat: 로그인 폼 추가"
 
# 3. 더 많은 작업...
git commit -m "feat: 로그인 API 연동"
 
# 4. main에 병합
git switch main
git merge feature/login
 
# 5. 브랜치 삭제
git branch -d feature/login

브랜치 관련 명령어

명령어설명참고
git branch브랜치 목록/생성git branch
git switch브랜치 전환git checkout과 switch
git merge브랜치 병합git merge
git branch -d브랜치 삭제git branch

자주 하는 실수

변경사항을 커밋하지 않고 브랜치 전환

증상: 변경사항이 다른 브랜치로 따라옴

해결: 전환 전 커밋하거나 stash

git stash           # 임시 저장
git switch main
git stash pop       # 복원

잘못된 브랜치에서 작업

잘못된 브랜치에서 작업했을 때 참고

관련 명령어

더 알아보기