Git-Flow & Github-Flow 전략

Git 브랜치 전략이란?
Git을 사용하여 프로젝트를 관리할 때, 브랜치를 어떻게 생성하고 관리하며, 각 브랜치가 어떤 역할을 하는지를 정의하는 체계적인 방법을 의미합니다. 즉, 브랜치를 어떻게 활용할 것인가에 대한 전체적인 틀이라고 할 수 있습니다.
Git-Flow 전략
Git Flow는 브랜치 전략 중 하나로, 특히 대규모 프로젝트에서 안정적인 소프트웨어 개발과 배포를 위해 고안된 전략입니다.
master, develop, feature, release, hotfix 등 다양한 브랜치를 사용하여 개발 과정을 명확하게 분리하고, 엄격한 워크플로를 따르는 것이 특징입니다.

기본적으로 5가지 중,항시 유지되는 메인 브랜치 master, develop 2가지와
merge 되면 사라지는 보조 브랜치 feature, release, hotfix 3 가지로 구성됩니다.
Git-flow 브랜치 구조
각 브랜치 구조를 설명하자면,
- master : 라이브 서버에 제품으로 출시되는 브랜치.
- develop : 다음 출시 버전을 대비하여 개발하는 브랜치.
- feature : 추가 기능 개발 브랜치. develop 브랜치에 들어간다.
- release : 다음 버전 출시를 준비하는 브랜치. develop 브랜치를 release 브랜치로 옮긴 후 QA, 테스트를 진행하고 master 브랜치로 합친다.
- hotfix : master 브랜치에서 발생한 버그를 수정하는 브랜치.
Git-flow 과정
기본적인 과정은 이렇습니다.
- master 브랜치에서 develop 브랜치를 분기합니다.
- 개발자들은 develop 브랜치에 자유롭게 커밋을 합니다.
- 기능 구현이 있는 경우 develop 브랜치에서 feature-* 브랜치를 분기합니다.
- 배포를 준비하기 위해 develop 브랜치에서 release-* 브랜치를 분기합니다.
- 테스트를 진행하면서 발생하는 버그 수정은 hotfix-* 브랜치에 직접 반영합니다.
- 테스트가 완료되면 release 브랜치를 master와 develop에 merge합니다.
Github-Flow 전략
Git flow도 좋은 방식이지만 Github에 적용하기에는 복잡하는 판단에 새로 만들어진 관리 방식입니다.
자동화 개념이 들어가있다라는 큰 특징이 존재하며 Git flow에 비해 흐림이 단순해지고 그 규칙도 단순합니다.

구체적으로 hotfix 브랜치나 feature 브랜치를 구분하지 않고 수시로 배포가 일어나며, CI와 배포가 자동화되어있는 프로젝트에 유용합니다.
요즘 웹 서비스들은 전체적으로 배포의 개념이 없어지고 있는 추세이기 때문에 이러한 전략을 자주 사용하기에 더 수월할 것입니다.
Github-Flow 사용법
전반적인 플로우 사용법은 이렇습니다.
-
master 브랜치는 어떤 때든 배포가 가능합니다
master 브랜치는 항상 최신 상태며, stable 상태로 product에 배포되는 브랜치이고 엄격한 role과 함께 사용합니다.
하지만 merge하기 전에 충분히 테스트를 해야합니다.
-
master에서 새로운일을 시작하기 위해 브랜치를 만든다면, 이름을 명확히 작성합니다
새로운 브랜치는 항상 master 브랜치에서 만들고 Git-flow와는 다르게 feature 브랜치나 develop 브랜치가 존재하지 않습니다.
새로운 기능을 추가하거나, 버그를 해결하기 위한 브랜치 이름은 자세하게 어떤 일을 하고 있는지에 대해서 작성합니다.
또한 커밋메시지는 명확하게 작성 해야합니다.
-
원격지 브랜치로 수시로 push 합니다
Git-flow와 상반되는 방식이며 항상 원격지에 자신이 하고 있는 일들을 올려 다른 사람들도 확인할 수 있도록 해줍니다.
-
피드백이나 도움이 필요할 때, 그리고 merge 준비가 완료되었을 때는 pull request를 생성합니다
-
기능에 대한 리뷰와 논의가 끝난 후 master로 merge합니다
CI도 통과하면 바로 기능이 투입됩니다
-
master로 merge되고 push 되었을 때는, 즉시 배포되어야합니다
master로 merge가 일어나면 자동으로 배포가 되도록 설정해놓니다
