Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- redis
- lambda
- StringBuilder
- 테스트 코드
- select_type
- jwt
- static
- java
- SQL
- equals
- DDL
- DI
- 생성자 주입
- cache
- AOP
- hashcode
- MSA
- 조합
- jpa
- KEVISS
- 인덱스
- Spring
- 필드 주입
- docker
- Test
- VUE
- 재정의
- 바이너리 카운팅
- stream
- 열 속성
Archives
- Today
- Total
백엔드 개발자 블로그
Branch 전략 본문
여러명의 개발자가 1개의 저장소를 사용하는 환경에서 충돌없이 효과적으로 사용하기 위해서는 Git Branch 전략이 필요합니다. 그래서 주로 사용하는 Git Branch를 정리해봤습니다.
1. GitHub Flow
- Github에서 만든 단순한 구조의 branch 전략입니다.
- 마스터 브랜치를 중심으로 운영되며, 기능 개발, 버그 수정 등의 작업용 브랜치를 구분하지 않고 사용하는 단순한 구조를 사용하고 있습니다.
- 단순한 구조를 사용하여 수시로 배포가 일어나는 소규모 프로젝트에 유용합니다.
Github flow단계
1. 브랜치 생성
- 기능 개발, 버그 수정 구분 없이 master 브랜치로부터 새로운 브랜치를 생성하여 사용합니다.
- 기능 개발, 버그 수정 구분이 없으므로 브랜치 이름은 간결하고 정확하게 작성해야 합니다.
2. 기능 개발
- 생성한 브랜치 내에서는 각각의 목적에 맞는 작업을 수행합니다.
- 이 떄 기능별로하는 commit들은 서버의 동일한 브랜치에 push해줘야 합니다.
3. Pull Request 생성
- 기능 개발 또는 오류 수정 등의 작업이 끝났으면 master브랜치로 PR을 보냅니다.
4. 리뷰와 논의
- 요청이 올라온 PR을 통해 팀원들은 작성한 코드에 대한 리뷰와 논의를 진행합니다.
5. 공개 및 테스트
- merge이전에 먼저 브랜치 내에서 코드를 배포하여 사용을 해보며, 해당 branch에 문제가 발생할 시에는 안정적인 기존의 master브랜치를 다시 배포하고 branch코드는 다시 수정한 후 다시 배포할 수 있습니다.
6. 합치기(Merge)
- 개발 branch가 안전하다는 검증이 완료된다면 master 브랜치에 합칩니다.
2. Git Flow
- Vincent Driessen가 제안한 Branch model을 기반으로 만들어졌으며 현재는 많은 기업에서 표준으로 사용하는 브랜치 전략입니다.
- 5개의 브랜치를 운영하며 관리합니다.
- 메인 브랜치 : master, develop
- 보조 브랜치 : feature, release, hotfix
- 배포 주기가 길고 대규모 프로젝트에 적합합니다.
Git Flow의 Branch
Master & Develop
- Master Branch : 현재 배포할 수 있는 코드들이 위치한 브랜치입니다.
- Develop Branch : 개발자들이 다음 버전을 위해 사용하고 있는 브랜치입니다.
- 다음 버전의 구현이 완료되어 배포를 하고 싶을 때 Master Branch로 합치는 방식으로 운영됩니다.
feature
- 추가적인 기능 개발을 위해 develop branch로부터 생성하는 Branch입니다.
- 개발을 완료한 후에는 develop branch으로 merge하는 방식으로 운영됩니다.
- --no-ff옵션을 이용하여 브랜치에서 merge가 되었음을 git 기록에 남겨두도록 해야합니다.
release
- Production의 다음 출시 버전을 위한 브랜치입니다.
- develop브랜치에서 개발을 완료한 후, release 브랜치로 옮겨 release 브랜치에서 QA를 진행합니다.
- QA를 진행하며 release 브랜치에서는 버그 픽스에 대한 부분만 commit합니다.
- 배포를 할 준비가 되었다고 판단되면 master 브랜치로 merge합니다.
- --no-ff옵션을 이용하여 브랜치에서 merge가 되었음을 git 기록에 남겨두도록 해야합니다.
- master로 머지 후 tag 명령을 이용하여 릴리즈 버전에 대해 명시를 하고, -s 나 -u 옵션을 이용하여 merge한 사람의 정보를 남겨두도록 합니다. 그런 뒤 develop 브런치로 merge합니다.
hotfix
- master로부터 버그가 발생하면 hotfix 브랜치를 생성하여 해당 버그를 빠르게 수정합니다.
- 버그를 수정한 후에는 develop, master브랜치에 merge해줍니다.
- master에 반영할 때는 master에 tag를 추가해줍니다.
- release브랜치가 존재한다면 release브랜치에도 merge해줍니다.
Git Flow 전략의 단계
- repository를 생성하면 master브랜치에 위치할 것입니다.
- 개발을 할 때는 develop 브랜치를 만들어 해당 브랜치에서 개발을 합니다.
- develop브랜치에서도 특정 기능을 개발할 때는 feature브랜치를 생성하여 개발을 합니다.
- feature브랜치의 개발이 끝나면 develop브랜치로 pull request를 보냅니다.
- develop브랜치의 개발 리더 또는 동료 직원들이 해당 request를 확인하고 문제가 없다면 merge를 합니다. merge이후에는 feature브랜치가 필요가 없어 삭제를 해줍니다.
- develop브랜치에서 어느정도 개발이 완료된다면 release브랜치를 생성하여 QA를 진행합니다. release 브랜치에서 발생한 버그들은 release브랜치에서 수정을 합니다.
- QA를 통과하여 제품이 출시될 수 있다면 master와 develop브랜치로 merge합니다.
- 마지막 master 브랜치에 버전 태그를 추가합니다.