개발을 하기 전 깃 플로우와 드렁크 베이스의 차이와 나의 상황에 어떤 게 나은 지 생각하다가 좀 더 자세히 알고자 작성을 해본다. 먼저 깃플로우부터 알아보자
Git Flow
Vincent Driessen이 제안한 Git 브랜치 모델로, 소프트웨어 개발에서 코드 버전 관리를 체계적으로 할 수 있게 해줍니다. 이 모델은 여러 개의 브랜치를 사용하여 개발 과정을 분리하고 관리

주요 브랜치
브랜치를 5종류로 나눌 수 있다.

주요 브랜치 자세한 설명
-
master
- 제품의 최종 릴리즈 버전이 저장됩니다.
- 릴리즈가 완료되면 release 브랜치가 master 브랜치에 병합됩니다.
-
develop
- 다음 릴리즈를 위해 개발 중인 최신 코드가 저장됩니다.
- feature 브랜치와 release 브랜치가 병합됩니다.
-
feature 브랜치
- 새로운 기능을 개발할 때 사용합니다.
- develop 브랜치에서 분기하고, 개발이 완료되면 다시 develop 브랜치에 병합합니다.
- 브랜치 명명 예:
feature/awesome-feature
-
release 브랜치
- 릴리즈 준비를 할 때 사용합니다.
- develop 브랜치에서 분기하고, 릴리즈 준비가 완료되면 master와 develop 브랜치에 병합됩니다.
- 브랜치 명명 예:
release/1.0.0
-
hotfix 브랜치
- 긴급한 버그 수정을 할 때 사용합니다.
- master 브랜치에서 분기하고, 수정이 완료되면 master와 develop 브랜치에 병합됩니다.
- 브랜치 명명 예:
hotfix/1.0.1
브랜치 흐름
-
기능 개발
develop 브랜치에서 feature 브랜치를 생성
- 기능 개발 완료 후
develop 브랜치에 병합
-
릴리즈 준비
develop 브랜치에서 release 브랜치를 생성
- 릴리즈 준비 완료 후
master와 develop 브랜치에 병합
-
긴급 수정
master 브랜치에서 hotfix 브랜치를 생성
- 버그 수정 완료 후
master와 develop 브랜치에 병합
장점
- 구조가 명확하여 여러 명이 협업할 때 효과적입니다.
- 여러 가지 브랜치를 사용하여 병렬 개발이 가능합니다.
- 릴리즈, 기능 개발, 버그 수정 등의 작업이 분리되어 관리됩니다.
단점
- 브랜치가 많아지면 관리가 복잡해질 수 있습니다.
- 브랜치 병합 시 충돌이 발생할 가능성이 있습니다.
- 작은 팀이나 빠른 배포가 필요한 환경에서는 비효율적일 수 있습니다.
트렁크 베이스(Trunk-Based Development)
드렁크베이스는 소프트웨어 개발에서 모든 개발자가 단일 브랜치(트렁크)에 직접적으로 통합하는 전략입니다. 이는 짧은 주기의 브랜치 라이프사이클을 특징으로 하며, 지속적인 통합(CI)과 지속적인 배포(CD)에 적합합니다.

주요 개념
-
트렁크 (메인 브랜치)
- 모든 코드가 모이는 단일 브랜치입니다.
- 지속적으로 통합되어 최신 상태를 유지합니다.
-
짧은 피처 브랜치
- 피처 브랜치를 만들 경우에도 짧은 시간 내에 트렁크에 병합됩니다.
- 가능한 한 빨리 트렁크에 통합하는 것이 목표입니다.
브랜치 흐름
-
기능 개발
- 짧은 피처 브랜치를 생성하여 기능 개발
- 기능이 완료되면 빠르게 트렁크에 병합
- 브랜치 명명 예:
feature/awesome-feature
-
버그 수정
- 트렁크에서 직접 버그 수정
- 필요한 경우 짧은 버그픽스 브랜치를 생성하여 수정 후 트렁크에 병합
- 브랜치 명명 예:
bugfix/issue-123
장점
- 단일 브랜치를 사용하여 복잡도가 낮습니다.
- 지속적인 통합(CI) 및 지속적인 배포(CD)와 잘 맞습니다.
- 개발 속도가 빠르고, 지속적인 배포가 가능하여 빠른 피드백을 받을 수 있습니다.
- 브랜치 병합 빈도가 높아 코드베이스가 항상 최신 상태를 유지합니다.
단점
- 브랜치 전략이 단순하여 대규모 프로젝트에서는 병합 충돌이 발생할 가능성이 높습니다.
- 모든 코드가 트렁크에 바로 병합되므로 안정성을 확보하기 어려울 수 있습니다.
- 팀원 간의 긴밀한 협업과 높은 테스트 자동화가 필요합니다.
Git Flow와 트렁크 베이스의 차이점
