목록으로
Git

팀을 위한 Git 워크플로우

브랜치 전략부터 코드 리뷰까지. 팀에서 Git을 효과적으로 사용하는 방법을 알아봅니다.

Git은 현대 소프트웨어 개발에서 필수 도구입니다. 혼자 개발할 때는 기본 명령어만 알아도 충분하지만, 팀으로 작업할 때는 체계적인 워크플로우가 필요합니다.

브랜치 전략

GitHub Flow

가장 단순한 브랜치 전략입니다. main 브랜치와 feature 브랜치만 사용합니다.

  1. main에서 새 브랜치를 만듭니다
  2. 작업하고 커밋합니다
  3. Pull Request를 생성합니다
  4. 코드 리뷰 후 main에 병합합니다
  5. 병합된 브랜치는 삭제합니다
# 새 기능 개발
git checkout main
git pull origin main
git checkout -b feature/user-authentication

# 작업 후
git add .
git commit -m "feat: 로그인 기능 구현"
git push origin feature/user-authentication
# GitHub에서 PR 생성

스타트업이나 소규모 팀에서 적합합니다. 배포 주기가 빠른 프로젝트에 좋습니다.

Git Flow

더 체계적인 브랜치 전략입니다. 여러 종류의 브랜치를 사용합니다.

  • main: 프로덕션 배포 브랜치
  • develop: 개발 브랜치
  • feature/*: 기능 개발
  • release/*: 배포 준비
  • hotfix/*: 긴급 버그 수정

릴리즈 주기가 정해진 프로젝트에 적합합니다. 다만 복잡도가 높아서 소규모 프로젝트에는 과할 수 있습니다.

커밋 메시지 컨벤션

좋은 커밋 메시지는 프로젝트 히스토리를 이해하는 데 큰 도움이 됩니다. Conventional Commits 규칙을 추천합니다.

<type>: <description>

[optional body]

[optional footer]

타입의 종류는 다음과 같습니다.

  • feat: 새로운 기능
  • fix: 버그 수정
  • docs: 문서 변경
  • style: 코드 포맷팅 (기능 변경 없음)
  • refactor: 리팩토링
  • test: 테스트 추가/수정
  • chore: 빌드, 설정 변경

예시를 보겠습니다.

feat: 소셜 로그인 기능 추가

Google, GitHub OAuth 연동
- Google OAuth 2.0 클라이언트 설정
- GitHub OAuth 앱 연동
- 로그인 페이지 UI 업데이트

Closes #123

Pull Request 작성법

좋은 PR은 리뷰어의 시간을 절약해줍니다.

PR 제목

변경 사항을 한 줄로 요약합니다. 커밋 메시지 컨벤션을 따르면 좋습니다.

feat: 장바구니 기능 구현
fix: 로그인 후 리다이렉트 오류 수정

PR 본문 템플릿

## 변경 사항
- 장바구니 추가/삭제 기능
- 수량 변경 기능
- 장바구니 페이지 UI

## 스크린샷
(UI 변경이 있으면 첨부)

## 테스트
- [x] 상품 추가 테스트
- [x] 수량 변경 테스트
- [x] 삭제 테스트

## 참고 사항
- API 스펙 문서: [링크]
- 관련 이슈: #456

코드 리뷰 문화

코드 리뷰는 단순히 버그를 찾는 것이 아닙니다. 지식 공유, 코드 품질 향상, 팀 성장을 위한 과정입니다.

리뷰어로서

  1. 코드의 의도를 먼저 이해하려고 합니다
  2. 질문 형태로 의견을 제시합니다
  3. 구체적인 대안을 제시합니다
  4. 좋은 코드에는 칭찬합니다
// 좋지 않은 리뷰
"이 코드는 이상합니다."

// 좋은 리뷰
"이 부분에서 N+1 쿼리가 발생할 것 같습니다.
 데이터를 미리 로드하는 방식은 어떨까요?"

작성자로서

  1. PR을 작게 유지합니다 (300줄 이하 권장)
  2. 셀프 리뷰를 먼저 합니다
  3. 리뷰 의견에 열린 자세를 유지합니다
  4. 반영 사항을 명확히 답변합니다

충돌 해결

병합 충돌은 피할 수 없습니다. 침착하게 해결하면 됩니다.

# main의 최신 변경사항 가져오기
git checkout main
git pull origin main

# 작업 브랜치로 돌아가서 rebase
git checkout feature/my-feature
git rebase main

# 충돌 발생 시
# 1. 충돌 파일 수정
# 2. git add <파일>
# 3. git rebase --continue

# 완료 후 force push (rebase 했으므로)
git push origin feature/my-feature --force-with-lease

--force-with-lease는 일반 --force보다 안전합니다. 다른 사람의 커밋을 덮어쓰는 것을 방지합니다.

유용한 Git 명령어

# 마지막 커밋 메시지 수정
git commit --amend -m "새로운 메시지"

# 특정 커밋으로 되돌리기 (히스토리 유지)
git revert <commit-hash>

# 작업 중인 변경사항 임시 저장
git stash
git stash pop

# 브랜치 이름 변경
git branch -m old-name new-name

# 커밋 로그 깔끔하게 보기
git log --oneline --graph

# 특정 파일의 변경 히스토리
git log -p -- path/to/file

마무리

Git 워크플로우는 팀의 상황에 맞게 조정해야 합니다. 중요한 것은 팀원 모두가 같은 규칙을 따르는 것입니다.

처음에는 번거로울 수 있지만, 일관된 워크플로우는 장기적으로 팀의 생산성을 크게 높여줍니다.