← 블로그로 돌아가기
개발 2025년 11월 10일
Git 워크플로우 — 혼자 개발할 때도 브랜치를 써야 하는 이유
혼자 개발해도 main에 직접 커밋하면 안 되는 이유와, 실용적인 솔로 Git 워크플로우.
Git 워크플로우 브랜치 개발 프로세스
“혼자인데 브랜치가 왜 필요해?”
혼자 개발하면 main에 바로 커밋하는 게 빠르고 편하다. 맞다, 평소에는. 문제는 예외 상황에서 터진다.
- 기능 A를 만들다가 급한 버그 수정이 필요할 때
- 실험적인 변경을 했는데 롤백하고 싶을 때
- 배포 후 문제가 발생해서 이전 상태로 돌아가야 할 때
main에 모든 커밋이 섞여 있으면, 특정 변경만 되돌리기가 어렵다.
실용적인 솔로 워크플로우
팀용 Git Flow는 혼자에게 과하다. 이 정도면 충분하다:
main ─── 항상 배포 가능한 상태
│
├── feat/blog-section ─── 기능 개발
├── fix/navbar-mobile ─── 버그 수정
└── exp/new-layout ─── 실험 (삭제해도 됨)
규칙
main에 직접 커밋하지 않는다- 기능/수정마다 브랜치를 만든다
- 완료되면 main에 머지하고 브랜치를 삭제한다
exp/접두사는 실험용 — 실패하면 그냥 삭제
브랜치 네이밍
feat/블로그-섹션 # 새 기능
fix/모바일-메뉴-깨짐 # 버그 수정
exp/다크모드-테스트 # 실험
chore/의존성-업데이트 # 유지보수
접두사만 통일하면 git branch로 현재 진행 중인 작업을 한눈에 볼 수 있다.
커밋 메시지
혼자여도 커밋 메시지는 의미 있게 쓰자. 3개월 후의 자기 자신이 이해할 수 있어야 한다.
# 나쁜 예
git commit -m "수정"
git commit -m "업데이트"
git commit -m "ㅇㅇ"
# 좋은 예
git commit -m "feat: add blog category filter component"
git commit -m "fix: navbar not closing on mobile after link click"
git commit -m "chore: update astro to v6.0.8"
Conventional Commits 형식을 따르면, 나중에 CHANGELOG 자동 생성이나 릴리스 노트 작성이 쉬워진다.
실전 시나리오
기능 개발 중 긴급 수정
# 블로그 기능 개발 중
git checkout feat/blog-section
# 급한 버그 발견!
git stash # 작업 임시 저장
git checkout main
git checkout -b fix/critical-bug
# 수정 후
git commit -m "fix: broken contact link"
git checkout main
git merge fix/critical-bug
git push # 바로 배포
# 다시 원래 작업으로
git checkout feat/blog-section
git stash pop # 임시 저장 복원
main에 직접 커밋했다면, 미완성 블로그 코드와 버그 수정이 뒤섞여서 배포 자체가 위험했을 것이다.
실험 후 폐기
git checkout -b exp/new-animation
# 이것저것 시도...
# 결과가 마음에 안 듦
git checkout main
git branch -D exp/new-animation # 깔끔하게 삭제
main이 깨끗하게 유지된다.
.gitignore 기본
node_modules/
dist/
.env
.env.local
.DS_Store
*.log
node_modules와 dist는 빌드 산출물이므로 추적하지 않는다. .env는 시크릿이 들어있으므로 절대 커밋하지 않는다.
유용한 Git 명령어
# 최근 커밋 히스토리 한줄 보기
git log --oneline -10
# 변경사항 확인
git diff --stat
# 마지막 커밋 수정 (push 전에만)
git commit --amend
# 특정 파일만 스테이징
git add src/components/Navbar.astro
# 브랜치 정리 (머지된 브랜치 삭제)
git branch --merged | grep -v main | xargs git branch -d
정리
혼자 개발해도 브랜치를 쓰면 작업이 분리되고, 롤백이 쉬워지고, 배포가 안전해진다. main은 항상 배포 가능한 상태로 유지하자. 5초의 git checkout -b가 나중에 몇 시간의 디버깅을 줄여준다.