GIT branch 명명 규칙
만약 1~2명에서 하는 소규모 프로젝트에서 GIT을 사용하면 특별하게 규칙이라고 할것도 없습니다.
하지만 프로젝트 규모가 커지고 인원도 늘어나게되면 한가지 레파지토리내에서 일정한 규칙은 반드시 존재해야합니다.
단독적으로 프로젝트만들면 맘대로 해도되지만요.
그래도 국내에서 나 해외에서나 GIT을 통상적으로 사용하는 패턴을 소개하고자 합니다.
설명하게 앞서 지금 소개해드리는 내용은 이미 많은 블로그나 글들에 등록되어있는데 2010년에 ” https://nvie.com/posts/ ” 포스트에 실린 “A successful Git branching model” https://nvie.com/posts/a-successful-git-branching-model/에 관한 내용입니다.
GIT을 국내 프로젝트에서 많이사용하게 된 시점이 3~4년 전인걸 감안하면.. 앞으로 정보력이 생명… (앞으로도 열심히 )
Github 이나 Gitlab이나 똑같이 Branch 구조를 어떻게 생성하고 내려가는지 설명하겠습니다.
보통 Repository를 처음 만들고나면 Branch명은 Master 브랜치로 생성됩니다.
Master 브랜치에서는 최초 Initial 개념의 시작점이며
개발을 위해선 별도로 Develop이라는 브랜치를 하나 만들고 나아갑니다.
먼저 크게 브랜치 종류를 어떤식으로 생성하는지 설명하겠습니다.
MASTER / DEVELOP 가 대부분 기준점이자 시작점입니다.
- Master (Main Branch)
- Develop (Main Branch)
- Feature/<Issue_number> or <Feature_name> / <Short Description>
- Release/<version_number>
- Hotfix/<Issue_number> or Issue/<Issue_number>
1. Master Branch
배포 가능한 상태만을 관리합니다.
2. Develop Branch
이 브랜치를 기반으로 개발을 진행. 즉, 모든 기능이 추가되고 버그가 수정되어 배포 가능한 안정적인 상태라면 develop 브랜치를 ‘master’ 브랜치에 병합(merge)합니다.
3. Feature branch
- ‘develop’ 브랜치에서 새로운 기능에 대한 feature 브랜치를 분기한다.
-
새로운 기능에 대한 작업 수행한다.
-
작업이 끝나면 Local에서 개발한 Feature 브랜치를 develop에 병합한다.
-
더 이상 필요하지 않은 feature 브랜치는 삭제한다.
-
새로운 기능에 대한 ‘feature’ 브랜치를 중앙 원격(Remote) 저장소에 올린다.(push)
4. Release Branch
그 이후 테스트를 통해 최종적으로 버그 수정이라든가, 문서 추가등 실질적으로 Release 출시 하기 직전에 하는 단계들을 위한 브랜치 입니다. 만약 버그수정이 있다면 수정하고 Develop 에다가도 병합해줍니다.
기능에 대한 병합작업은 하지 않는 단계이며 마지막 검토 정도로 생각하면 될것 같습니다. 기능에 대한 개발은 계속해서 Develop 이나 Feature Branch에서 이어나갑니다.
또 배포를 준비하는동안에 Release 브랜치가 변경되었을 수 있기때문에 배포 완료후에 Develop 에다가도 병합합니다.
-
- EX) release/1.2
* 소프트웨어 번호 관리는 보통 SemVer (Semantic Versioning의 줄임말) 버전의 형식은 [Major].[Minor].[Patch]
- EX) release/1.2
5. Hotfix Branch
존재의 이유는 갑작스럽게 수정해야 하는 부분이며 Patch 버젼(1.2.1)을 새롭게 변경해 줍니다.
맨 오른쪽이 프로젝트를 처음 만든 Master 브랜치입니다.
첫 출발에 맞춰 시작점을 git Tag를 부여해 0.1로 기입하며 시작합니다. 그리고 develop이라는 개발 branch를 생성 그이후 기본적인 옵션이나 설정들을 해나가게 됩니다.
그리고 이제 팀프로젝트에서 기능별(상품,고객,주문배송) 및 개발파트별로 Feature branches를 생성(Local) 합니다. 그러면 각 파트별 개발자들은 개발들을 쭉쭉 이어나갑니다.
그러던 와중에 갑자기 무조건 고쳐야할 무언가가 대상이 발견됩니다. 바로 Master 브랜치에서 HotFix브랜치를 분기하고 고칩니다. 그리고 Master 브랜치에 병합하고 또 Develop 브랜치에도 병합합니다.
이 Release 브랜치는 1.0으로 Master 브랜치에 넘어가기 직전의 단계이며, 추가적으로 버그가 있는지 또는 문서작업이 필요한게 있는지 최종적으로 점검합니다.
모든 점검이 끝나고 드디어 Master 브랜치 1.0 으로 병합되어 개발싸이클이 끝나게 됩니다.
그리고 이런 싸이클이 진행되면서도 다른 Branch에서도 개발은 계속 이어나가게 됩니다.
너무 서술식으로 작성되어 이해가 어려울수도 있겠지만 대략적인 흐름에 대해서는 감이 오셨을거라고 생각합니다.
다음엔 좀더 쉽게 이해할 수 있도록 작성해 보겠습니다.
참고로 구글에서도 구글 브랜치 전략이라고 치면 다음과 같이 많은 내용들이 나오고 설명되어있으니 참고바랍니다.
One thought on “[GIT] GIT branch strategy 명명규칙 및 전략”
안녕하세요. 정리해주셔서 감사합니다. 참고하겠습니다! 🙂