[이제와서 시작하는 GitHub 마스터하기 - 기초편 #11] Branch 기본: 독립적인 작업 공간 만들기
[이제와서 시작하는 GitHub 마스터하기 - 기초편 #11] Branch 기본: 독립적인 작업 공간 만들기
지난 편 복습
기초편 #10에서는 실전 워크플로우를 배웠습니다:
- ✅ 프로젝트 시작부터 배포까지의 전체 흐름
- ✅ 일일 작업 루틴과 팀 협업 워크플로우
- ✅ 롤백과 문제 해결 방법
이제 본격적으로 브랜치(Branch)를 배워봅시다! 브랜치는 협업의 핵심 도구입니다.
학습 목표
이 장을 마치면 다음을 할 수 있습니다:
- ✅ Branch(브랜치)의 개념과 필요성을 이해할 수 있습니다
- ✅ 브랜치를 생성하고 전환할 수 있습니다
- ✅ 브랜치를 관리하고 삭제할 수 있습니다
- ✅ 브랜치 전략의 기본을 이해할 수 있습니다
Branch란?
개념
브랜치는 독립적인 작업 공간입니다. 메인 코드에 영향을 주지 않고 새로운 기능을 개발하거나 버그를 수정할 수 있습니다.
gitGraph
commit
commit
branch feature
checkout feature
commit
commit
checkout main
commit
merge feature
commit
왜 필요한가?
브랜치 없이 작업:
1
main: A → B → (실험 중...) → X (실패!) → 되돌리기 복잡
브랜치 사용:
1
2
3
main: A → B → C → D (안전!)
\
feature: E → F → (실패!) → 브랜치만 삭제
장점:
- 🔒 안전성: main 브랜치는 항상 안정적
- 🚀 동시 작업: 여러 기능을 동시에 개발
- 🔄 롤백 용이: 실패한 실험은 브랜치만 삭제
- 👥 협업: 각자 브랜치에서 작업
기본 명령어
브랜치 확인
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 로컬 브랜치 목록
git branch
# * main
# feature-login
# 원격 브랜치 포함
git branch -a
# * main
# feature-login
# remotes/origin/main
# remotes/origin/feature-signup
# 각 브랜치의 마지막 커밋
git branch -v
# * main a1b2c3d Add README
# feature-login e4f5g6h Implement login
브랜치 생성
1
2
3
4
5
6
7
8
9
10
11
# 새 브랜치 생성
git branch feature-signup
# 생성 + 전환을 한 번에
git checkout -b feature-signup
# 또는 (Git 2.23+)
git switch -c feature-signup
# 특정 커밋에서 브랜치 생성
git branch feature-hotfix a1b2c3d
브랜치 전환
1
2
3
4
5
6
7
8
9
10
11
# 브랜치 전환
git checkout feature-signup
# 또는 (Git 2.23+)
git switch feature-signup
# 이전 브랜치로 돌아가기
git checkout -
# 강제 전환 (변경사항 무시, 위험!)
git checkout -f feature-signup
브랜치 삭제
1
2
3
4
5
6
7
8
# 로컬 브랜치 삭제
git branch -d feature-signup
# 강제 삭제 (병합 안 된 브랜치)
git branch -D feature-signup
# 원격 브랜치 삭제
git push origin --delete feature-signup
브랜치 작업 흐름
기능 개발 시나리오
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 1. 최신 main으로 업데이트
git checkout main
git pull origin main
# 2. 새 기능 브랜치 생성
git checkout -b feature/user-profile
# 3. 작업 및 커밋
echo "profile code" > profile.js
git add profile.js
git commit -m "feat: add user profile"
# 4. 추가 작업
echo "styling" > profile.css
git add profile.css
git commit -m "style: add profile styling"
# 5. 원격에 푸시
git push -u origin feature/user-profile
# 6. GitHub에서 Pull Request 생성
# 7. 승인 후 병합
# 8. 로컬 브랜치 정리
git checkout main
git pull origin main
git branch -d feature/user-profile
버그 수정 시나리오
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 1. main에서 핫픽스 브랜치 생성
git checkout main
git checkout -b hotfix/login-error
# 2. 버그 수정
git add fixed-file.js
git commit -m "fix: resolve login error"
# 3. 푸시 및 PR
git push -u origin hotfix/login-error
# 4. 긴급 병합
# (코드 리뷰 후 즉시 main에 병합)
# 5. 정리
git checkout main
git pull origin main
git branch -d hotfix/login-error
브랜치 네이밍 컨벤션
일반적인 접두사
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 기능 개발
feature/user-authentication
feature/payment-integration
# 버그 수정
fix/login-button
bugfix/memory-leak
# 핫픽스 (긴급 수정)
hotfix/critical-security-patch
# 리팩토링
refactor/database-layer
# 문서
docs/api-documentation
# 테스트
test/integration-tests
# 릴리스
release/v1.2.0
네이밍 규칙
DO ✅:
feature/add-user-login(명확하고 구체적)fix/navbar-alignment(문제가 명확)hotfix/security-patch-v1(긴급성 표시)
DON’T ❌:
my-branch(의미 불명확)test(너무 일반적)feature/updatestuff(불명확)
자주 묻는 질문 (FAQ)
Q1. main과 master의 차이는?
A: 기능은 동일합니다. GitHub는 2020년부터 기본 브랜치 이름을 main으로 변경했습니다.
1
2
3
# master를 main으로 변경
git branch -m master main
git push -u origin main
Q2. 브랜치 전환 시 변경사항이 사라지나요?
A: 아니요. 커밋하지 않은 변경사항은:
- 옵션 1: 커밋 후 전환
- 옵션 2: Stash로 임시 저장
1
2
3
4
5
git stash
git checkout other-branch
# 작업...
git checkout original-branch
git stash pop
Q3. 브랜치가 너무 많아졌어요!
A: 주기적으로 정리하세요:
1
2
3
4
5
6
7
8
# 병합된 브랜치 확인
git branch --merged
# 병합된 브랜치 일괄 삭제
git branch --merged | grep -v "\*" | xargs -n 1 git branch -d
# 원격 브랜치 정리
git remote prune origin
Q4. 잘못된 브랜치에서 작업했어요!
A: 변경사항을 올바른 브랜치로 옮기세요:
1
2
3
4
5
6
7
8
9
10
11
12
# 1. 잘못된 브랜치에서 커밋
git add .
git commit -m "feat: new feature"
# 2. 올바른 브랜치 생성 (현재 위치에서)
git branch correct-branch
# 3. 잘못된 브랜치를 이전 상태로 되돌리기
git reset --hard HEAD~1
# 4. 올바른 브랜치로 전환
git checkout correct-branch
실습 과제
과제 1: 브랜치 기본 연습
- 새 저장소 생성
- main 브랜치에 README 커밋
- feature/test-branch 생성 및 전환
- 파일 추가 및 커밋
- main으로 돌아오기
- 브랜치 목록 확인
과제 2: 동시 작업 연습
- feature/login 브랜치 생성 및 작업
- feature/signup 브랜치 생성 및 작업
- 각 브랜치에서 커밋
- 브랜치 간 전환하며 파일 변화 확인
과제 3: 브랜치 정리
- 여러 브랜치 생성 (5개 이상)
git branch확인- 사용하지 않는 브랜치 삭제
git branch -v로 상태 확인
마무리
축하합니다! Git 브랜치의 기본을 마스터했습니다.
핵심 요약:
- ✅ 브랜치: 독립적인 작업 공간
- ✅ 생성:
git checkout -b branch-name - ✅ 전환:
git checkout branch-name - ✅ 삭제:
git branch -d branch-name - ✅ 네이밍: feature/, fix/, hotfix/
다음 편에서는 Merge와 Rebase를 배워보겠습니다!
📚 GitHub 마스터하기 시리즈
🌱 기초편 (입문자)
- GitHub 소개와 계정 만들기
- 프로필 꾸미기와 포트폴리오
- 보안 설정과 인증
- Repository 이해하기
- README 작성법
- .gitignore와 라이선스
- 첫 커밋과 관리
- git add와 commit
- git push와 pull
- 실전 워크플로우
- Branch 기본 👉 현재 글
- Merge와 Rebase
- 브랜치 전략
- Fork와 Clone
- Pull Request
💼 실전편 (중급자)
🚀 고급편 (전문가)
- GitHub Actions 입문
- Actions 고급 활용
- Webhooks와 API
- GitHub Apps 개발
- 보안 기능 활용
- Packages 레지스트리
- Codespaces 클라우드 개발
- GitHub CLI 마스터
- Insights와 Analytics
🏆 심화편 (전문가+)
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.
