브랜치 전략은 정말 중요한 Git 사용 패턴이에요.
🌿 브랜치를 사용하는 장점
✅ 원본 소스 보존:
- main 브랜치: 항상 안정적인 상태 유지
- 기능 브랜치: 실험적 변경사항 분리
- 롤백 용이: 문제 시 이전 상태로 쉽게 복원
✅ 안전한 개발:
bash
# 새 기능 개발
git checkout -b feature/user-login
# 개발 작업...
git push origin feature/user-login
# main은 그대로 보존!
🎯 추천 브랜치 전략
개인 프로젝트용 (간단한 방법):
bash
# 새 기능 작업
git checkout -b feature/새기능명
# 버그 수정
git checkout -b bugfix/버그명
# 실험적 기능
git checkout -b experiment/실험명
실제 사용 예시:
bash
# 1. 새 브랜치 생성 및 이동
git checkout -b feature/add-camera-filter
# 2. 작업 후 커밋
git add .
git commit -m "Add camera filter functionality"
# 3. 브랜치 푸시
git push origin feature/add-camera-filter
# 4. GitHub에서 Pull Request 생성
# 5. 검토 후 main 브랜치에 병합
📊 브랜치 vs 직접 Push 비교
방식안전성협업롤백추천도
브랜치 사용 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | 강력 추천 |
main 직접 push | ⭐⭐⭐ | ⭐⭐ | ⭐⭐ | 개인 프로젝트만 |
🛡️ 원본 보존 전략
1. Protected Main Branch (추천):
GitHub → Settings → Branches → Add rule
- Branch name: main
- Require pull request reviews
2. 브랜치 네이밍 규칙:
bash
feature/기능명 # 새 기능
bugfix/버그명 # 버그 수정
hotfix/긴급수정명 # 긴급 수정
release/버전명 # 릴리즈 준비
experiment/실험명 # 실험적 기능
🔄 실무에서 사용하는 워크플로우
Git Flow (표준 방식):
bash
# 1. 개발 시작
git checkout main
git pull origin main
git checkout -b feature/new-feature
# 2. 개발 작업
# ... 코딩 ...
# 3. 커밋 & 푸시
git add .
git commit -m "Add new feature"
git push origin feature/new-feature
# 4. Pull Request 생성 (GitHub에서)
# 5. 리뷰 후 Merge
# 6. 브랜치 정리
git checkout main
git pull origin main
git branch -d feature/new-feature
⚡ 간단한 개인 프로젝트용 전략
최소한의 브랜치 사용:
bash
# 안정 버전 보존용
git checkout -b stable
git push origin stable
# 개발은 main에서 계속
git checkout main
# ... 개발 작업 ...
# 문제 생기면 stable로 롤백
git checkout stable
🎯 당신의 프로젝트에 추천
personal 프로젝트용:
bash
# 현재 안정 버전 백업
git checkout -b stable/v1.0
git push origin stable/v1.0
# 새 기능 개발
git checkout main
git checkout -b feature/admob-integration
# ... AdMob 광고 추가 작업 ...
git push origin feature/admob-integration
# 다른 기능
git checkout main
git checkout -b feature/pwa-enhancement
💡 결론 및 권장사항
강력 추천: 브랜치 사용하세요!
장점:
- 🛡️ 원본 안전하게 보존
- 🔄 쉬운 롤백
- 👥 협업 시 충돌 방지
- 📝 변경 이력 명확
시작하기:
bash
# 지금 당장 안정 버전 백업
git checkout -b stable
git push origin stable
# 앞으로 새 기능은 브랜치로
git checkout main
git checkout -b feature/your-new-feature
브랜치는 Git의 핵심 기능이며, 사용하면 할수록 개발이 안전하고 체계적이 됩니다!
실제 개발에서 롤백이 필요한 상황과 해결 과정을 보여드리겠습니다.
📚 시나리오: Personal 앱 개발 과정
개발 히스토리:
bash
main (v1.0) → v1.1 → v1.2 → v1.3 (문제 발생!)
↓
stable/v1.0 (안전한 백업)
🛠️ 개발 과정 시뮬레이션
1단계: 초기 안정 버전 생성 (v1.0)
bash
# 현재 안정적인 상태를 백업
git checkout -b stable/v1.0
git push origin stable/v1.0
git checkout main
2단계: 새 기능 개발들
bash
# v1.1: AdMob 광고 추가
git checkout -b feature/admob-integration
# ... 개발 작업 ...
git commit -m "Add AdMob integration v1.1"
git push origin feature/admob-integration
# GitHub에서 main으로 merge
# v1.2: PWA 기능 강화
git checkout main
git pull origin main
git checkout -b feature/pwa-enhancement
# ... 개발 작업 ...
git commit -m "Enhance PWA features v1.2"
git push origin feature/pwa-enhancement
# GitHub에서 main으로 merge
# v1.3: 새로운 필터 기능
git checkout main
git pull origin main
git checkout -b feature/new-filters
# ... 개발 작업 ...
git commit -m "Add new camera filters v1.3"
git push origin feature/new-filters
# GitHub에서 main으로 merge
🚨 문제 발생! v1.3에서 심각한 버그
발견된 문제들:
- 📱 앱이 자주 크래시
- 🐛 카메라가 작동하지 않음
- 💸 광고 수익이 0원
- 😡 사용자 불만 폭발
🔍 문제 분석 및 롤백 결정
각 버전 상태 확인:
bash
# 현재 상황 파악
git log --oneline --graph
# 결과 예시:
* a1b2c3d (HEAD -> main) Add new camera filters v1.3
* d4e5f6g Enhance PWA features v1.2
* g7h8i9j Add AdMob integration v1.1
* j1k2l3m (stable/v1.0) Initial stable version v1.0
테스트 결과:
- ✅ v1.0: 완벽 작동
- ✅ v1.1: AdMob 잘 작동
- ❌ v1.2: PWA에서 미세한 버그
- 💥 v1.3: 심각한 크래시
결정: v1.1로 롤백하자!
🔄 롤백 실행 과정
방법 1: Hard Reset (간단하지만 위험)
bash
# v1.1 커밋 해시 찾기
git log --oneline
# d4e5f6g ← v1.1 커밋
# 강제로 v1.1로 되돌리기
git reset --hard d4e5f6g
# 강제 푸시 (주의!)
git push --force origin main
방법 2: Revert (안전한 방법, 추천)
bash
# v1.3과 v1.2를 순서대로 되돌리기
git revert a1b2c3d # v1.3 되돌리기
git revert d4e5f6g # v1.2 되돌리기
# 커밋 메시지 예시:
# "Revert v1.3: Remove problematic camera filters"
# "Revert v1.2: Remove PWA enhancements due to bugs"
git push origin main
방법 3: 새 브랜치로 안전하게 롤백 (최고 안전)
bash
# 1. 문제 버전 백업
git checkout -b broken/v1.3-issues
git push origin broken/v1.3-issues
# 2. v1.1 기준으로 새 브랜치 생성
git checkout d4e5f6g # v1.1 커밋으로 이동
git checkout -b hotfix/rollback-to-v1.1
# 3. main을 안전하게 교체
git checkout main
git reset --hard d4e5f6g
git push --force origin main
# 또는 새 커밋으로 되돌리기
git checkout hotfix/rollback-to-v1.1
git checkout main
git merge hotfix/rollback-to-v1.1
🛡️ 롤백 후 안전 조치
즉시 실행할 작업들:
bash
# 1. 롤백된 버전 테스트
npm install # 의존성 재설치
npm run build # 빌드 테스트
npm run test # 자동 테스트 실행
# 2. 새로운 안정 버전 태그
git tag v1.1-stable
git push origin v1.1-stable
# 3. 배포 환경 업데이트
# Vercel, Netlify 등에 재배포
📊 롤백 방법 비교
방법안전성복잡도히스토리 보존추천도
Hard Reset | ⭐⭐ | ⭐ | ❌ | 긴급시만 |
Revert | ⭐⭐⭐⭐ | ⭐⭐⭐ | ✅ | 추천 |
새 브랜치 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ✅ | 최고 |
🔮 롤백 후 개발 재개
문제 해결 후 다시 시도:
bash
# 1. 안정 버전에서 시작
git checkout main # 현재 v1.1 상태
# 2. 문제를 해결한 새 브랜치
git checkout -b feature/camera-filters-fixed
# ... 버그 수정된 필터 기능 재개발 ...
git commit -m "Add camera filters with crash fixes"
git push origin feature/camera-filters-fixed
# 3. 단계적 테스트 후 merge
# 충분한 테스트 → Pull Request → Merge
💡 롤백 방지 Best Practices
예방 조치들:
bash
# 1. 브랜치별 태그 생성
git tag v1.1-admob
git tag v1.2-pwa
git tag v1.3-filters
# 2. 자동 테스트 설정
# GitHub Actions, Jest 등 CI/CD
# 3. 단계적 배포
# feature → staging → production
# 4. 정기적 백업
git checkout -b backup/$(date +%Y%m%d)
🎯 현실적인 롤백 시나리오
bash
# 🚨 긴급 상황: 프로덕션에서 크래시!
# 1단계: 즉시 안전한 버전으로 롤백 (1분)
git checkout stable/v1.0
git checkout -b emergency/production-fix
git push origin emergency/production-fix
# → 배포 환경을 이 브랜치로 즉시 변경
# 2단계: 문제 분석 (여유롭게)
git checkout broken/v1.3-issues
# 디버깅, 로그 분석...
# 3단계: 수정 후 재배포 (안전하게)
git checkout emergency/production-fix
git checkout -b feature/fixed-filters
# ... 문제 해결 ...
# 테스트 → staging → production
핵심은 항상 안전한 백업 브랜치를 유지하고, 단계적으로 롤백하는 것입니다!