Local 중심 Branch 전략
출처: https://medium.com/@yanminthwin/understanding-github-flow-and-git-flow-957bc6e12220
- 배포의 기준이 되는 Branch이며 Release Tag를 기록하는 Branch
- Main Branch에 직접 commit을 하거나 Develop, Release가 아닌 Branch에서 merge 금지
- 개발의 중심이 되는 Branch
- 배포 버전별로 정의된 기능을 구현하여 Develop Branch에 merge
- 코드를 배포할 때 Develop Branch로부터 Release Branch를 생성
- 실제 기능 구현은 Feature Branch에서 진행
- 실제 기능을 구현하는 Branch
- 기능을 구현하거나, 버그 픽스, 리팩토링 등을 수행하기 위해 Develop Branch로부터 Branch를 생성하여 작업 수행
- Feature Branch에서 작업이 완료된 경우 Develop Branch에 merge
- 배포를 준비하는 Branch
- Develop Branch에서 배포를 위한 개발이 완료되면 Release Branch를 생성하여 배포 준비
- Bug fix 및 추가적인 Refactoring 진행, 추가된 작업 Develop Branch에도 반영
- 배포 준비 완료 시 Main Branch로 merge
- 배포가 완료된 버전(Main Branch)에서 심각한 버그나 문제 발생 시 사용하는 Branch
- Main Branch로부터 Hotfix Branch를 생성하여 문제 해결 후 필요한 Branch들에 merge
- Remote 중심 Branch 전략
- Main, Feature Branch만 존재
- 배포 준비를 위한 Branch가 없기 때문에 Main Branch에 merge하는 작업 엄격히 관리
출처: https://medium.com/@yanminthwin/understanding-github-flow-and-git-flow-957bc6e12220
Main + Develop + Release
Feature + Hotfix
- Commit을 남기는 규칙
- 일관적인 Commit Log를 통해 서로 다른 사람들이 작업한 내용을 쉽게 파악하고 유지보수 가능
- Header, Body, Footer로 구성 (Body, Footer는 선택사항)
- Commit Log의 제목
- 50자 이내, 대문자 작성, 마침표 x, 과거 시제 x, 명령어로 작성
- Ex) feat: Add rest api code
- 작업에 대한 상세 기록을 나타내는 본문
- Header로 설명 가능한 수준이라면 Body 생략 가능
- Ex) feat: Add user authentication feature
- Implemented user registration from with validation
- Enhanced UI with user-friendly error messages
- 해당 작업과 관련된 Issue의 Tag 기록
- Issue, Commit 양방향 참조 가능 -> 작업 History 관리 유용
- #{Issue 번호}
- Ex) feat: Add user authentication feature
- Implemented user registration from with validation
- Enhanced UI with user-friendly error messages#123
commit 전에 정해진 로직(hook)을 자동으로 실행
- 코드 포맷팅 - 일관된 스타일 유지를 위한 포맷팅 수행
- 정적 분석 - 정적 분석 도구를 사용하여 코드의 잠재적인 버그, 보안 취약점 또는 일반적 코드 품질 문제 확인
- 테스트 실행 - 자동화된 테스트를 실행하여 새로 추가되었거나 수정된 코드가 기존 로직에 영향을 주지 않았는지 확인
- 의존성 관리 - 코드에 필요한 모든 라이브러리 의존성이 만족되었는지 확인

개발 작업 단위
- 작업해야할 사항이 있다면 Issue 등록
- 각 Issue에 맞는 Feature Branch를 생성하여 작업 진행
- Feature Branch 생성 시 Branch 명에 Issue Tag 사용 -> Branch 식별 용이
- Ex) feat-3/branch-name (3번 Issue를 해결하는 기능 구현 Branch)

다른 Branch로 merge 수행 전 팀원에게 코드 리뷰를 받는 단계
- 작업의 개요 (Overview)
- 변경된 부분 (Change Log)
- 리뷰어 참고사항 (To Reviewer)
- 관련 이슈 (Issue Tag)