Git은 개발자들이 협업을 할 때 가장 널리 사용하는 버전 관리 시스템 중 하나입니다. 그중에서도 브랜치 관리는 효율적인 협업과 코드 품질을 유지하는 핵심 요소입니다. 이번 포스트에서는 Git 브랜치를 관리하는 다양한 방법과 전략을 소개하고, 이를 통해 코드 품질과 협업 효율성을 높이는 방법을 알아보겠습니다.
브랜치는 독립된 코드의 흐름을 의미합니다. 기본 브랜치인 main(또는 master) 브랜치 외에, 새로운 기능 개발, 버그 수정, 실험 등을 위해 다양한 브랜치를 생성할 수 있습니다. 이를 통해, 메인 코드베이스의 안정성을 유지하면서도 다양한 작업을 동시에 진행할 수 있게 됩니다.
Git Flow는 가장 널리 사용되는 브랜치 전략 중 하나입니다. Git Flow의 기본 구조는 다음과 같습니다.
- main 브랜치: 항상 안정적인 상태의 코드를 유지합니다. 릴리즈된 코드만 이곳에 병합됩니다.
- develop 브랜치: 개발 작업을 통합하는 브랜치입니다. 새로운 기능이나 버그 수정이 완료되면 이곳에 병합합니다.
- feature 브랜치: 기능별로 생성하는 브랜치입니다. develop에서 분기하여 작업하고, 완료되면 develop에 병합합니다.
- release 브랜치: 릴리즈 전 최종 검토를 위한 브랜치입니다. develop에서 분기하여 버그 수정, 테스트 등을 진행한 후 main과 develop에 병합됩니다.
- hotfix 브랜치: 긴급한 버그 수정을 위해 main에서 분기합니다. 수정이 완료되면 main과 develop에 병합됩니다.
git checkout -b feature/new-feature develop
git add .
git commit -m "Implement new feature"
git checkout develop
git merge feature/new-feature
git branch -d feature/new-feature
GitHub Flow는 단순하면서도 효율적인 브랜치 전략입니다. 특히 지속적 배포(CD) 환경에서 자주 사용됩니다.
- main 브랜치: 릴리즈 준비가 된 코드를 항상 유지합니다.
- 기능 브랜치: 각 작업은 main에서 새로운 브랜치를 생성하여 진행합니다.
- Pull Request: 기능이 완료되면 main 브랜치로 병합 요청(Pull Request)을 보냅니다.
- 코드 리뷰 및 병합: 팀원들이 코드 리뷰를 진행한 후 main 브랜치로 병합합니다.
// 기본적인 GitHub Flow 명령어 예시
git checkout -b new-feature
git add .
git commit -m "Add new feature"
git push origin new-feature
// GitHub에서 Pull Request 생성
Trunk Based Development는 main 브랜치에서만 작업을 하며, 짧고 자주 커밋하는 방식을 지향합니다. CI/CD 파이프라인과 함께 사용하여 코드의 품질과 배포의 신속성을 높입니다.
- main 브랜치: 모든 작업을 짧고 자주 병합합니다.
- 기능 브랜치: 보통 하루 내에 작업을 완료하고 main에 병합합니다.
- Pull Request: 코드 리뷰는 항상 필요하지만, 병합은 신속하게 진행합니다.
// 기본적인 Trunk Based Development 예시
git checkout -b small-change
git add .
git commit -m "Make a small change"
git checkout main
git merge small-change
git branch -d small-change
브랜치 네이밍 규칙을 통일하면, 코드 관리가 훨씬 수월해집니다. 일반적으로 다음과 같은 규칙을 사용합니다.
feature/ : 새로운 기능 개발
fix/ : 버그 수정
hotfix/ : 긴급한 버그 수정
release/ : 릴리즈 준비
chore/ : 빌드 설정이나 기타 자잘한 작업
예를 들어, feature/login-page, fix/user-authentication-error와 같은 형태로 브랜치 이름을 명명합니다.
브랜치 삭제: 불필요한 브랜치는 주기적으로 삭제하여 관리합니다.
bash
코드 복사
git branch -d feature/old-feature
병합 전에 Pull: 항상 병합 전에 최신 코드를 Pull 받아서 충돌을 최소화합니다.
bash
코드 복사
git pull origin main
커밋 메시지 규칙: 브랜치와 함께 커밋 메시지에도 규칙을 적용하면 추후 변경 이력을 쉽게 추적할 수 있습니다.