브랜치는 협업과 기능 개발의 핵심 축이다.
단순 명령어 나열보다 포인터 이동 + 커밋 그래프 관점으로 이해하는 게 실무에서 훨씬 유효하다.
브랜치 관련 핵심 명령어 정리

1. git branch
역할
브랜치 생성 / 조회 / 삭제
핵심 원리
- 브랜치는 특정 커밋을 가리키는 포인터
- 새 브랜치는 현재 HEAD 위치를 그대로 복사
git branch
git branch feature
git branch -d feature
특징
- 생성은 가볍고 빠름 (단순 포인터 생성)
- 삭제는 병합 여부 검사 (-d vs -D)
2. git checkout
역할
브랜치 이동 또는 특정 커밋으로 전환
동작 원리
- HEAD가 가리키는 브랜치를 변경
- Working Directory 내용도 해당 브랜치 상태로 변경
git checkout feature
git checkout -b feature
특징
- 과거 커밋 checkout 시 Detached HEAD 상태 발생
3. git switch (권장)
역할
브랜치 전환 전용 명령어 (checkout 대체)
git switch feature
git switch -c feature
특징
- checkout보다 명확한 역할 분리
- 실무에서는 switch 사용 권장
4. git merge
역할
다른 브랜치의 변경사항을 현재 브랜치로 통합
동작 원리
1) Fast-forward
2) 3-way merge
- 공통 조상 기준으로 병합
- merge commit 생성
git merge feature
특징
- 충돌(conflict) 발생 가능
- 히스토리 보존
5. git rebase
역할
브랜치의 base를 변경하여 히스토리를 재정렬
동작 원리
- 기존 커밋을 새로운 base 위에 재적용(replay)
git rebase main
특징
- 히스토리 직선화 (linear history)
- 충돌 발생 시 단계별 해결 필요
- 공유 브랜치에서는 사용 주의
6. git cherry-pick
역할
특정 커밋 하나만 선택적으로 적용
git cherry-pick <commit_hash>
특징
- 필요한 변경만 가져올 때 유용
- 커밋 중복 가능성 존재
7. git branch -vv / 추적 브랜치
역할
로컬 브랜치와 원격 브랜치의 연결 상태 확인
git branch -vv
개념
-
tracking branch
- 로컬 ↔ 원격 브랜치 매핑
- pull/push 기본 대상
8. git push -u (upstream 설정)
git push -u origin feature
특징
- 이후
git push, git pull 간소화
- upstream 자동 설정
9. 브랜치 전략 (실무 관점)
1) Git Flow
- main / develop / feature / release / hotfix
2) Trunk-based
선택 기준
10. merge vs rebase 비교
| 항목 | merge | rebase |
|---|
| 히스토리 | 분기 유지 | 직선 |
| 커밋 보존 | 그대로 유지 | 재작성 |
| 협업 안정성 | 높음 | 낮음 |
| 가독성 | 낮을 수 있음 | 높음 |
11. 핵심 구조 요약
- 브랜치 = 커밋 포인터
- HEAD = 현재 작업 위치
- merge = 브랜치 합치기
- rebase = 커밋 재배치
12. 실무 팁
- feature 브랜치는 짧게 유지
- main에는 직접 commit 금지
- rebase는 개인 브랜치에서만 사용
- merge 전 pull/rebase로 최신화
참고 자료
3줄 요약
- 브랜치는 커밋을 가리키는 포인터이며 checkout/switch로 이동한다
- merge는 병합, rebase는 히스토리 재정렬이라는 구조적 차이가 핵심
- 협업에서는 merge 중심, 개인 작업에서는 rebase 활용이 안전하다