Git Branch 전략
여러 개발자가 하나의 저장소에 작업을 할 때, 협업을 좀 더 효과적으로 하기 위해 git branch
에 대한 규칙을 정하고 저장소를 잘 활용하기 위한 workflow를 정의하는 것을 바로 git branch
전략이라고 한다. 소프트웨어 개발 팀에서는 프로젝트의 특성에 따라 적절한 브랜치 배포 전략을 채택하는 것이 중요하다.
Git Branch 전략의 필요성
Git branch
전략은 여러 명의 개발자가 동시에 작업할 때 특히 유용하다. 각자 다른 기능을 담당하는 브랜치를 사용하여 작업하면, 개발 중인 기능이나 수정사항이 서로 독립적으로 진행될 수 있다. 또한, 각각의 브랜치가 특정 기능, 이슈에 대응하여 특정 작업을 추적하고, 필요한 경우 작업 단위의 Rollback이 가능하여 프로젝트 관리의 유연성을 향상시켜준다. 각각의 태그는 Release를 원하는 버전 단위로 관리할 수 있도록 하여, 배포 안정성을 향상시켜준다.
Git Flow
브랜치 종류
master
: 제품 출시 버전을 관리하는 메인 브랜치develop
: 다음 출시 버전을 위해 개발하는 브랜치feature
: 새로운 기능을 개발하는 브랜치release
: 다음 출시 버전을 준비하는 브랜치hotfix
: 출시된 제품의 버그를 고치기 위한 브랜치
Git Flow의 개발 흐름
- 신규 기능 개발을 위해 개발자는
develop
브랜치를 기준으로feature
브랜치를 따서 작업을 진행한다. - 작업이 완료된
feature
브랜치는develop
브랜치로 병합(Merge)된다. 일반적으로 프로젝트 진행 시 Pull Request를 통해 작업 내용을 Review 받은 후 해당 PR을 Merge하는 방식으로 진행한다. - 다음 출시 버전을 위해 개발 중인
develop
브랜치에서release
브랜치를 따서 배포를 준비한다. 이 때 발견되는 버그들은release
브랜치에서 바로 반영한다. - 충분한 테스트 후, 일정한 주기로
master
브랜치로 Merge하여 제품을 출시한다. - 상용 배포 이후,
release
브랜치에서 미처 발견되지 못한 새로운 버그들은hotfix
브랜치에 바로 반영한다.
GitHub Flow
GitHub Flow
는 쉽게 요약하자면, 브랜치를 하나의 base 브랜치(master
)와 master
에 기능을 추가하기 위한 브랜치(feature
) 두 개만으로 운영하여 훨씬 간단하지만 빠르게 수정 배포할 수 있는 전략이다.
Git Flow
와 비교하였을 때 훨씬 간단하다. Git Flow
는 다양한 종류의 브랜치를 사용하는 반면, GitHub Flow
는 단일 브랜치(master
)를 사용한다. 배포는 Git Flow
와 동일하게 master
브랜치에서 수행되지만, 그 외의 release
, hotfix
등의 다른 브랜치들 대신 하나의 feature
브랜치만이 존재한다.
GitHub Flow의 개발 흐름
master
브랜치는 배포를 위한 소스코드를 관리하는 브랜치이다. 신규 기능 개발이 필요할 때, feature
브랜치를 따서 작업을 진행한다. 태스크가 완료되면, Pull Request를 생성하여 Review를 요청한다. 이 때의 타겟은 master
브랜치이다. 리뷰가 완료되고, 피드백이 모두 반영되면 해당 feature
브랜치를 master
브랜치로 Merge한다.
Git Flow와 GitHub Flow 중 어떤 전략을 사용해야 할까?
Git Flow
와 GitHub Flow
다양한 관점에서 두 전략 비교
- 브랜치 수:
Git Flow
는 다양한 종류의 브랜치를 사용하는 반면,GitHub Flow
는 단일 브랜치(master
)를 사용한다. - 배포 방식:
Git Flow
는release
와hotfix
브랜치를 통해 명확한 배포 절차를 갖추고 있다. 반면에,GitHub Flow
는 단순하며 지속적인 배포를 강조하여master
브랜치에서 배포를 수행한다. - 복잡성:
Git Flow
는 복잡한 프로젝트나 대규모 팀에서 사용하기 좋다. 그러나 이는 작은 팀이나 개인 프로젝트에 적용하기에는 많은 브랜치와 과정이 불필요하고 부담스러울 수 있다.GitHub Flow
는 단순하며 빠른 개발 및 배포를 위해 사용된다.
✅ 각각의 전략은 장단점이 존재하기에 프로젝트의 규모, 요구 사항 및 팀의 작업 방식에 맞추어 적절하게 채택하는 것이 좋다.
✅ Git Flow
는 더 많은 제어와 복잡성을 가지고 있어 특정 기능이나 수정을 빠르게 배포해야 할 경우 등에서 유연성이 다소 떨어진다. 그러나 그만큼 배포 안정성과 버전 관리 및 롤백 등 체계적인 운영이 가능하다.
✅ GitHub Flow
는 테스트와 검증 절차를 거치지 않고 바로 master
브랜치로 Merge 되므로 위험성을 가지고 있다. 하지만 그만큼 단순하고 빠르게 기능을 테스트하고 Agile 하게 배포할 수 있기 때문에, 주로 각 환경의 구분이 명확하지 않고 작은 규모의 프로젝트에 적합한 전략이다.