Github 가이드: Branch
- Git Flow와 Github Flow
- Git을 사용하며 branch를 활용하는 전략입니다.
- Local 중심의 Git flow와 Remote 중심의 Github flow가 대표적입니다.
- Local Remote 중심은 최신 commit이 위치하는 곳을 의미합니다.
- Git flow는 Local에 최근 작업한 commit들이, Github flow는 Local과 Remote에 위치합니다.
01 Git Flow
- Gitflow: Local 중심 Branch 전략
- 주요 branch로는 main(master), develop, release, feature, hotfix 등이 있습니다.
- main(master)
- 배포의 기준이 되며 Release Tag를 기록하는 브랜치입니다.
- 배포용이므로 main에 직접 commit하거나 비배포용 branch에서 merge 금지.
- hotfix 브랜치는 main에 직접 merge 가능.
- develop
- 주로 개발이 이루어지는 브랜치.
- 동시 작업 시 conflict 발생 가능, 따라서 feature 브랜치에서 작업 후 develop에 merge 권장.
- feature
- 개발 작업의 핵심, develop에서 분기.
- Issue에 등록된 기능, bugfix, refactoring 등을 수행.
- 작업 완료 시 develop에 merge.
- 예: feat, refactor, fix, docs 등의 prefix 사용.
- release
- 배포 준비를 위한 브랜치.
- develop에서 분기, bugfix 및 추가 refactoring 진행.
- 준비 완료 시 main에 merge.
- hotfix
- 배포된 버전(main)에서 문제 발생 시 사용.
- main에서 분기, 문제 해결 후 main 및 develop에 merge.
02 Github Flow
- Remote 중심 Branch 전략
- Git Flow와 달리, 주로 main 브랜치와 feature 브랜치로 구성.
- main은 배포의 중심, feature는 기능 개발의 중심.
- Remote에 작업 내용을 수시로 push, 항상 최신 상태 유지.
- 배포 준비용 브랜치 없이, main에 merge 시 엄격한 관리 필요.
- Github Flow는 빠른 반영과 심플한 구조가 특징.