🌳
EPISODE 01
branch · switch · HEAD · merge · GitHub Flow
브랜치 전략
독립적인 작업 흐름을 만드는 브랜치, switch/checkout, HEAD 포인터, Fast-forward와 3-way merge의 차이, 그리고 단순한 GitHub Flow 워크플로를 익힙니다.
GitbranchmergeGitHub Flow
소요 시간
⏱ 45분
난이도
📊 중급
선수 조건
🎯 react-08
결과물
feature 브랜치 → PR → merge → 삭제 사이클 체화
이 강의에서 배우는 것
- 1브랜치의 개념과 사용 이유를 설명한다
- 2switch -c / branch -d 같은 핵심 명령어를 사용한다
- 3Fast-forward와 3-way merge의 차이를 안다
- 4GitHub Flow의 규칙(main 항상 배포 가능)을 안다
1. 브랜치란
text
main: A --- B --- C
\
feature/login: D --- Efeature/login 에서 D, E를 만들어도 main은 C에 그대로 있습니다.
2. 핵심 명령어
bash
git branch # 현재 브랜치 목록
git branch -a # 원격 포함
git branch feature/login # 새 브랜치 생성
git switch feature/login # 이동 (Git 2.23+)
git switch -c feature/login # 생성 + 이동
# 구버전
git checkout feature/login
git checkout -b feature/login
git branch -d feature/login # 병합된 것만 삭제
git branch -D feature/login # 강제 삭제3. HEAD
bash
cat .git/HEAD
# ref: refs/heads/main
git switch feature/login
cat .git/HEAD
# ref: refs/heads/feature/login4. Fast-forward Merge
text
병합 전:
main: A --- B
\
feature: C --- D
병합 후 (FF — 단순히 포인터 이동):
main: A --- B --- C --- Dbash
git switch main
git merge feature/login
git branch -d feature/login5. 3-way Merge
text
병합 전:
main: A --- B --- C
\
feature: D --- E
병합 후 (병합 커밋 M 생성):
main: A --- B --- C ------- M
\ /
feature: D --- E ---6. Feature 브랜치 워크플로
bash
git switch main
git switch -c feature/login
# 작업 + 커밋
git add login.js
git commit -m "feat: 로그인 기능 추가"
# main에 병합
git switch main
git merge feature/login
git branch -d feature/login7. GitHub Flow
text
main (항상 배포 가능)
↓ switch -c
feature/기능명
↓ 작업 + 커밋 + push
↓ Pull Request
↓ 코드 리뷰
↓ merge → main
↓ 배포- main은 항상 배포 가능한 상태를 유지
- 새 작업은 무조건 브랜치에서
- 코드 리뷰(PR)를 거쳐야만 main에 병합
bash
git log --oneline --graph --all