오늘은 깃 branch(이하 브랜치로 통일) 전략을 조사해보고,
비교하는 시간을 가져볼까 합니다.
팀으로 프로젝트를 진행하면서
브랜치 전략 중 Gitflow 방식을 채택하여 진행하게 되었습니다.
branch 전략에 대해 처음 알게 되어서,
전략들이 무엇이 있는지, 그 필요성과 장단점에 대해 간략하게 정리해 보고자 하였습니다.
혹시라도 잘못된 정보나 이와 관련한 추가 사항이 있다면 댓글 남겨주시면 감사하겠습니다.
자료를 찾아보니 대부분 GitFlow 방식과
GitHubFlow 방식 중 하나를 택하여 사용하는 것 같았습니다.
그래서 이 두가지 위주로 정리했습니다.
깃 branch전략, 왜 필요한가?
이 글을 읽으시는 분은 깃을 어느 정도 안다는 전제하에 진행하겠습니다.
아래 설명하는 용어들이 이해가 잘 안 간다면,
이전에 작성한 깃허브 소개 글이나 추가로 관련 자료들을 찾아보시면 될 것 같습니다.
2024.09.09 - [알아보자 시리즈] - '깃허브'에 대해 알아보자
간단하게 설명하자면 브랜치는 독립적으로 작업을 진행하기 위한 공간입니다.
이때 다수가 여러 브랜치를 병합하다 보면 그 과정에서 내용이 뒤섞이기 쉽습니다.
따라서 브랜치를 어디에, 어떻게 생성할지, 어떤 걸 병합 할지 등
사전에 명확한 규칙을 정하여 보다 효과적으로 작업하기 위해 깃 전략이 만들어지게 되었습니다.
GitFlow
동작 방식

깃 플로우는 위의 사진과 같은 구조로 진행됩니다.
develop과 master가 주된 브랜치로서
그 사이 사이에 hotfix, release, feature branch로 구성되어 있습니다.
특징
각 기능을 소개하자면 다음과 같습니다.
feature :
기능을 개발하기 위한 브랜치
develop :
feature의 기능을 모아,
다음 출시를 위한 최신 개발 변경 사항이 포함된 상태를 반영하는 주요 브랜치
release :
출시를 준비하기 위한 브랜치
hotfix :
배포된 버전에 문제 발생 시 빠르게 처리하기 위한 브랜치
master(main) :
출시 가능한 브랜치
장점 :
체계적이다.
긴급 수정에 용이하다.
단점 :
시간이 오래 걸린다
-> feature부터 Master까지 병합 과정을 거쳐야 한다.
복잡하다
->인원이 증가함에 따라 병합 충돌 발생 가능성도 같이 증가한다.
GitHubflow
이름처럼 깃허브에서 고안한 깃 브랜치 전략입니다.
아래 공식 문서에 들어가면 더 자세한 내용을 확인하실 수 있습니다.
https://docs.github.com/en/get-started/using-github/github-flow
동작 방식
깃허브 플로우는 마스터 브랜치 하나로 진행됩니다.
여기에 feature 브랜치를 생성하여,
기능이 완료되면 바로 마스터 브랜치에 merge 하게 됩니다.
특징
Master 브랜치가 항상 Stable 해야 한다는 점입니다.
이는 언제든 배포 가능한 상태이자,
브랜치를 새로 만들어도 문제가 없는 상태를 뜻합니다.
유일하게 이 점만을 강제하고 있습니다.
장점:
간단하다.
-> 빠른 배포가 가능하다.
Pull request를 통해 중간에 코드를 공유하거나 정보를 전달받는 등 피드백이 가능하다
-> 모두가 본 내용에 승인하면 자동으로 Master 브랜치에 병합이 진행된다.
단점:
빠른 만큼 배포 후에도 문제 발생 가능성이 높다.
버전에 대한 관리가 체계적이지 못하다.
결론
GitFlow
- > 대규모 프로젝트에서 사용하기 적합.
-> 배포 주기가 적은 프로젝트 적합
GitHubflow
- > 비교적 규모가 작은 프로젝트 사용에 적합.
-> 지속적으로 업데이트(Continuous Delivery/ CD) 해야 하는 서비스에 적합.
오늘은 이렇게 간단하게 두 가지 깃 브랜치 전략에 대해 정리해 보았습니다.
더 많은 깃 브랜치 전략에 대해 알아보고 싶으신 분이 있다면,
아래 GitLabflow나 Trunk-base에 관해 설명하는
영상 내용을 추가했으니 참고하시면 좋을 것 같습니다.
참고하면 좋을 내용
https://youtu.be/EV3FZ3cWBp8?si=ZdvBrris6TXH6xmf
https://youtu.be/etnFe2tBD5I?si=29JVuOa1amGzrfNy
\
https://georgestocker.com/2020/03/04/please-stop-recommending-git-flow/
Please stop recommending Git Flow!
Git-flow is a branching and merging methodology popularized by this blog post, entitled “A Successful Git branching model”. In the last ten years, countless teams have been snookered by…
georgestocker.com
https://nvie.com/posts/a-successful-git-branching-model/
A successful Git branching model
In this post I present a Git branching strategy for developing and releasing software as I’ve used it in many of my projects, and which has turned out to be very successful.
nvie.com