2023. 2. 7. 19:57ㆍ프로그래밍/Git
- 목차
trunk: 하나의 중심 브랜치로만 관리하는 것
trunk based flow: 하나의 중심 브랜치에서 필요할 때만 브랜치를 분기하는 것
Git flow
master, develop 브랜치는 영구적으로 존재함
hotfix, felease, feature 브랜치는 필요할 때마다 만들고, 머지 후에 삭제함
feature --> develop --> release --> master
- 큰 규모의 팀에 유용
- 퀄리티 보장이 중요한 프로덕트에 유용
- release 된 프로덕트에 대한 관리 사이클이 긴 경우 유용
master 브랜치 (main 브랜치)
소비자가 사용하는 제품이 존재하는 브랜치
release 브랜치로부터 pull request 받음
- 부모 브랜치: X
- 자손 브랜치: hotfix, develop
- PR 받는 브랜치: release
- PR 보내는 브랜치: X
hotfix 브랜치
배포된 서비스에 대한 긴급 버그 수정을 진행하는 브랜치
hotfix-* 형태로 이름을 지정해서 만듦
수정 완료 시 develop, master 브랜치에 각각 PR 을 보냄
- 부모 브랜치: master
- 자손 브랜치: X
- PR 받는 브랜치: X
- PR 보내는 브랜치: develop, master
release 브랜치
배포 전에 테스트하는 브랜치
release-* 형태로 이름을 지정해서 만듦
테스트 완료 시, develop, master 브랜치에 각각 PR 을 보내고, PR merge 완료 시 브랜치 삭제
- 부모 브랜치: develop
- 자손 브랜치: X
- PR 받는 브랜치: X
- PR 보내는 브랜치: develop, master
develop 브랜치
개발 단계의 코드가 있는 브랜치
개발 자체는 feature 브랜치에서 진행하고, 하나의 기능 구현이 완료되면 develop 브랜치로 PR 을 보냄
이러한 과정을 반복하여 특정 단계까지 개발이 완료되면 develop 브랜치를 베이스로 테스트를 위한 release 브랜치를 새로 만듦
- 부모 브랜치: master
- 자손 브랜치: feature, release
- PR 받는 브랜치: feature
- PR 보내는 브랜치: X
feature 브랜치
특정한 기능을 구현하는 브랜치
feature/기능명 형태로 이름을 지정해서 만듦
기능 구현 완료 시, develop 브랜치로 PR 을 보내고, merge 후 브랜치 삭제
- 부모 브랜치: develop
- 자손 브랜치: X
- PR 받는 브랜치: X
- PR 보내는 브랜치: develop
Github flow
배포용 브랜치인 master, 각 단위 기능 구현 브랜치인 feature 로 구성됨
feature 브랜치는 merge 후 삭제됨
- 작은 규모의 팀에서 유용
- release 된 프로덕트에 대한 관리 사이클이 짧은 경우 유용 (업데이트가 짧은 경우)
- 빠른 배포와 관리가 필요한 경우 유용
master 브랜치 (main 브랜치)
소비자가 사용하는 제품이 존재하는 브랜치
push 를 받으면 자동으로 실제 서비스로 배포되도록 설정되어 있음
feature 브랜치에서 단위 기능 구현이 완료될 때마다 PR 을 받음
- 부모 브랜치: X
- 자손 브랜치: feature
- PR 받는 브랜치: feature
- PR 보내는 브랜치: X
feature 브랜치
특정한 기능을 구현하는 브랜치
git flow 보다 더욱 구체적이고 명확하게 작업명을 작성해서 만듦
기능 구현 완료 시, master 브랜치로 PR 을 보내고 merge 후 브랜치 삭제
- 부모 브랜치: master
- 자손 브랜치: X
- PR 받는 브랜치: X
- PR 보내는 브랜치: master
Gitlab Flow
테스트를 위한 브랜치가 없고, 배포용 브랜치가 따로 없기 때문에 큰 규모의 서비스에 부적합함
github flow 의 단순함과 git flow 의 체계적인 관리를 절충적으로 합친 방식
pre-production 브랜치가 테스트를 담당하고 master 브랜치가 개발용 브랜치로 역할함
feature 브랜치는 merge 후 삭제됨
- 중간 규모의 팀에 유용
- 퀄리티 보장이 중요한 프로덕트에 유용
- 빠른 배포와 관리가 필요한 경우 유용
production 브랜치
소비자가 사용하는 제품이 존재하는 브랜치
pre-production 브랜치로부터 PR 을 받음
- 부모 브랜치: master
- 자손 브랜치: X
- PR 받는 브랜치: pre-production
- PR 보내는 브랜치: X
pre-production 브랜치
배포 전에 제품을 테스트하는 브랜치
테스트 완료 후 production, master 브랜치에 각각 PR 을 보냄
- 부모 브랜치: master
- 자손 브랜치: X
- PR 받는 브랜치: master
- PR 보내는 브랜치: production, master
master 브랜치 (main 브랜치)
개발 단계의 코드가 있는 브랜치
개발 자체는 feature 브랜치에서 진행하고, 하나의 기능 구현이 완료되면 master 브랜치가 PR 을 받음
이러한 과정을 반복하면서 특정 단계까지 개발이 완료되면, pre-production 으로 PR 을 보냄
- 부모 브랜치: X
- 자손 브랜치: feature
- PR 받는 브랜치: feature, pre-production
- PR 보내는 브랜치: pre-production
feature 브랜치
특정한 기능을 구현하는 브랜치
브랜치명은 github flow 처럼 자세하게 작성함
기능 구현 완료 시, master 브랜치로 PR 을 보내고 merge 후 브랜치 삭제
- 부모 브랜치: master
- 자손 브랜치: X
- PR 받는 브랜치: X
- PR 보내는 브랜치: master
- 배포용 브랜치 deploy
- 테스트용 브랜치 test
- 개발용 브랜치 main
- 기능개발용 브랜치 feature
큰 규모가 아니라면 이 정도로 사용하는 것이 좋음