Gitflow Workflow

데브쟁이·2021년 9월 29일
1

Gitflow는 과거에 Git 브랜치를 관리하기 위한 참신한 전략이었던 레거시 Git 워크플로우 입니다. 최근 DevOps 등 Trunk-based workflow 을 선호하여 인기가 떨어졌습니다. Gitflow는 CI/CD와 함께 사용하기 어려울 수 있습니다. 이 글에서는 과거를 회상하며 Gitflow 에 대해서 알아보고자 합니다.

Gitflow란?

Giflow는 Feature 브랜치 등 여러 브랜치 들을 사용하여 개발하는 Git 브랜치 모델입니다. Trunk-based 개발과 비교하여 Giflow에는 오랜기간 지속되는 여러 브랜치들과 규모가 큰 커밋이 있습니다. 개발자는 Feature 브랜치를 만들고 기능이 완료될 때까지 이를 Main 브랜치에 Merge(병합)하지 않습니다. 병합에 비용이 많이 소요되며 conflict(충돌) 이 잦습니다.

기본 개념

Develop 브랜치 / Main 브랜치


이 워크플로우 에서는 두 개의 큰 분기를 사용하여 프로젝트를 진행합니다. Main 브랜치는 공식 릴리즈의 히스토리를 저장하고 Develop 브랜치는 추가 기능들에 대한 통합 브랜치 역할을 합니다. Main 브랜치의 모든 커밋에 대해 버전 번호를 적어두는 것도 좋습니다.

git branch develop
git push -u origin develop

Develop 브랜치에는 프로젝트의 전체 기록이 포함되지만 Main 브랜치에는 요약된 버전이 포함됩니다. 모든 개발자는 Develop 브랜치를 clone 하고 기능 개발시에는 Feature 브랜치를 분기해야 합니다.

Feature 브랜치


각각의 새로운 기능은 백업/협업을 위해 중앙 저장소로 푸시할 수 있는 새로운 분기에 있어야 합니다. Develop 브랜치에서 분기하여 Feature 브랜치를 만들고 기능 개발이 완료되면 Develop 브랜치로 다시 병합해야 합니다. Main 브랜치에 직접 병합해서는 안됩니다.

# 기능 추가가 필요할 경우
git checkout develop
git checkout -b feature_branch

# 기능 개발 후
git checkout develop
git merge feature_branch

Release 브랜치


기능 개발이 충분히 완료되거나 릴리즈 날짜가 다가오면 Develop 브랜치에서 Release 브랜치를 분기합니다. 이 때부터는 기능 추가 없이 버그 수정, 문서 생성 등 릴리즈 관련 작업만 합니다. 완료되면 Main 브랜치로 병합하고 버전 번호를 태깅합니다. 그리고 Release 브랜치에 수정된 내용은 Develop 브랜치에 병합해야 합니다.

# 릴리즈 준비
git checkout develop
git checkout -b release/0.1.0

# 릴리즈 후
git checkout main
git merge release/0.1.0

Hotfix 브랜치


릴리즈 후 빠른 수정을 위해 Hotfix 브랜치를 이용합니다. Hotfix 브랜치는 Develop 브랜치가아닌 Main 브랜치에서 분기합니다. 수정이 완료되는 즉시 Main 브랜치와 Develop 브랜치(또는 현재 Release 브랜치) 모두에 병합되어야 합니다.

# 핫픽스 준비
git checkout main
git checkout -b hotfix_branch

# 핫픽스 후
git checkout main
git merge hotfix_branch
git checkout develop
git merge hotfix_branch
git branch -D hotfix_branch
profile
풀스택 개발자를 꿈꾸는 잡부

0개의 댓글