브랜치 종류에 따라 어떤 방식으로 브랜치의 이름을 정하는지 정리해 보려고 한다.
🔹 Branch 종류
[ Main branch ]
중앙 저장소에는 수명이 무한한 두 가지 메인 브랜치가 있다.
1. master branch
- 제품으로 출시될 수 있는 브랜치
- 사용자에게 배포 가능한 상태만을 관리한다.
- 여기서는 배포(release) 이력을 관리하기 위해 사용한다.
2. develop branch
- 다음 출시 버전을 개발하는 브랜치
- 기능 개발을 위한 브랜치들을 병합하기 위해 사용한다.
- 즉, 모든 기능이 추가되고 버그가 수정되어 배포 가능한 안정적인 상태라면 develop 브랜치를 master 브랜치에 merge(병합) 한다.
- 평소에는 이 브랜치를 기반으로 개발을 진행한다.
[ Supporting branches ]
다양한 supporting 브랜치를 사용하여 팀 구성원 간의 평행 개발을 할 수 있고, 기능을 쉽게 추적할 수 있다.
또한, 여러 가지 문제를 쉽게 해결할 수 있다.
supporting 브랜치들은 main 브랜치와 달리 나중에 제거되기 때문에 항상 제한된 수명을 갖는다.
supporting 브랜치는 세 가지로 나뉜다.
1. feature branch
- 기능을 개발하는 브랜치
- 새로운 기능 개발 및 버그 수정이 필요할 때마다 develop 브랜치로부터 분기한다.
- feature 브랜치에서의 작업은 기본적으로 공유할 필요가 없기 때문에 자신의 저장소에서 관리한다.
- 개발이 완료되면 develop 브랜치로 merge(병합)하여 다른 사람들과 공유한다.
[ 순서 ]
- develop 브랜치에서 새로운 기능에 대한 feature 브랜치를 분기한다.
- 새로운 기능에 대한 작업을 수행한다.
- 작업이 끝나면 develop 브랜치로 merge 한다.
- 더 이상 필요하지 않은 feature 브랜치는 삭제한다. - 많은 줄기는 작업에 혼란을 줄 수 있음
- 새로운 기능에 대한 feature 브랜치를 중앙 원격 저장소에 올린다.
# develop에서 분기되는 ${branchname}을 만들겠다는 명령어
# git checkout -b ${branchname} develop
git checkout -b feature/login develop
2. release branch
- 이전 출시 버전을 준비하는 브랜치
- 배포를 위한 전용 브랜치를 사용함으로써 한 팀이 해당 배포를 준비하는 종안 다른 팀은 다음 배포를 위한 기능 개발을 계속할 수 있다.
- 배포를 위한 최종적인 버그 수정, 문서 추가 등 배포와 직접적으로 관련된 작업을 수행한다.
- 이러한 작업들 이외에 release 브랜치에 새로운 기능을 추가로 merge 하지 않는다.
3. hotfix branch
- 출시 저번에서 발생한 버그를 수정하는 브랜치
- 배포한 버전에 긴급하게 수정을 해야 할 필요가 있을 경우, master 브랜치에서 분기하는 브랜치이다.
- 바로 배포가 가능한 master 브랜치에서 직접 브랜치를 만들어 필요한 부분만 수정한 후 다시 master 브랜치에 병합하여 이를 배포한다.
[ 순서 ]
- 배포한 버전에 긴급하게 수정할 부분 발생하면 master 브랜치에서 hotfix 브랜치를 분기한다.
- 문제가 되는 부분 수정 후, master 브랜치에 merge 후 배포한다.
- hotfix 브랜치에서의 변경 사항은 develop 브랜치에도 merge 한다.
버그 수정만을 위한 hotfix 브랜치를 따로 만들었기 때문에,
다음 배포를 위해 개발하던 작업 내용에는 전혀 영향을 주지 않는다.
즉, hotfix 브랜치는 master 브랜치에서 분리한 임시 브랜치라고 생각하면 된다.
🔹 Branch naming 규칙
1. master branch, develop branch
- master branch, develop branch는 본래의 이름을 사용하는 경우가 일반적이다.
2. feature branch
- 어떠한 이름도 사용 가능하다.
- 단, master, develop, release-{}, hotfix-{} 같은 이름은 사용할 수 없다.
- feature/기능요약 형식을 권장한다.
- ex) feature/login
- 이슈 추적을 사용한다면 feature/{issue-number}-{feature-name} 같은 형식을 따른다.
- ex) feature/1-init-project, feature/2-build-gradle-script-write
3. release branch
- release-RB_{}, release-{}, release/{} 같은 이름을 일반적으로 사용한다.
- release-{} 형식을 권장한다.
- ex) release-1.2
4. hotfix branch
- hotfix-{} 형식을 권장한다.
- ex) hotfix-1.2.1
📃 reference
'Github' 카테고리의 다른 글
[Git] ! [rejected] master - master (fetch first) push 에러 (2) | 2024.11.21 |
---|---|
[Git] React 프로젝트 Github Pages 배포하기 (0) | 2024.11.18 |
[Git] Commit 메시지 한글 깨짐 현상 해결 (0) | 2024.07.18 |
[Git] 프로젝트 올리기 (0) | 2023.09.22 |
Git과 Github 차이 (0) | 2023.09.20 |