Git-Flow & Github-Flow 전략

Updated: 2025-01-08

gitweekly
cover image

Git 브랜치 전략이란?
Git을 사용하여 프로젝트를 관리할 때, 브랜치를 어떻게 생성하고 관리하며, 각 브랜치가 어떤 역할을 하는지를 정의하는 체계적인 방법을 의미합니다. 즉, 브랜치를 어떻게 활용할 것인가에 대한 전체적인 틀이라고 할 수 있습니다.

Git-Flow 전략

Git Flow는 브랜치 전략 중 하나로, 특히 대규모 프로젝트에서 안정적인 소프트웨어 개발과 배포를 위해 고안된 전략입니다.

master, develop, feature, release, hotfix 등 다양한 브랜치를 사용하여 개발 과정을 명확하게 분리하고, 엄격한 워크플로를 따르는 것이 특징입니다.

image.png

기본적으로 5가지 중,항시 유지되는 메인 브랜치 master, develop 2가지와

merge 되면 사라지는 보조 브랜치 feature, release, hotfix 3 가지로 구성됩니다.

Git-flow 브랜치 구조

각 브랜치 구조를 설명하자면,

  • master : 라이브 서버에 제품으로 출시되는 브랜치.
  • develop : 다음 출시 버전을 대비하여 개발하는 브랜치.
  • feature : 추가 기능 개발 브랜치. develop 브랜치에 들어간다.
  • release : 다음 버전 출시를 준비하는 브랜치. develop 브랜치를 release 브랜치로 옮긴 후 QA, 테스트를 진행하고 master 브랜치로 합친다.
  • hotfix : master 브랜치에서 발생한 버그를 수정하는 브랜치.

Git-flow 과정

기본적인 과정은 이렇습니다.

  1. master 브랜치에서 develop 브랜치를 분기합니다.
  2. 개발자들은 develop 브랜치에 자유롭게 커밋을 합니다.
  3. 기능 구현이 있는 경우 develop 브랜치에서 feature-* 브랜치를 분기합니다.
  4. 배포를 준비하기 위해 develop 브랜치에서 release-* 브랜치를 분기합니다.
  5. 테스트를 진행하면서 발생하는 버그 수정은 hotfix-* 브랜치에 직접 반영합니다.
  6. 테스트가 완료되면 release 브랜치를 master와 develop에 merge합니다.

Github-Flow 전략

Git flow도 좋은 방식이지만 Github에 적용하기에는 복잡하는 판단에 새로 만들어진 관리 방식입니다.

자동화 개념이 들어가있다라는 큰 특징이 존재하며 Git flow에 비해 흐림이 단순해지고 그 규칙도 단순합니다.

image.png

구체적으로 hotfix 브랜치나 feature 브랜치를 구분하지 않고 수시로 배포가 일어나며, CI와 배포가 자동화되어있는 프로젝트에 유용합니다.

요즘 웹 서비스들은 전체적으로 배포의 개념이 없어지고 있는 추세이기 때문에 이러한 전략을 자주 사용하기에 더 수월할 것입니다.

Github-Flow 사용법

전반적인 플로우 사용법은 이렇습니다.

  1. master 브랜치는 어떤 때든 배포가 가능합니다

    master 브랜치는 항상 최신 상태며, stable 상태로 product에 배포되는 브랜치이고 엄격한 role과 함께 사용합니다.

    하지만 merge하기 전에 충분히 테스트를 해야합니다.

  2. master에서 새로운일을 시작하기 위해 브랜치를 만든다면, 이름을 명확히 작성합니다

    새로운 브랜치는 항상 master 브랜치에서 만들고 Git-flow와는 다르게 feature 브랜치나 develop 브랜치가 존재하지 않습니다.

    새로운 기능을 추가하거나, 버그를 해결하기 위한 브랜치 이름은 자세하게 어떤 일을 하고 있는지에 대해서 작성합니다.

    또한 커밋메시지는 명확하게 작성 해야합니다.

  3. 원격지 브랜치로 수시로 push 합니다

    Git-flow와 상반되는 방식이며 항상 원격지에 자신이 하고 있는 일들을 올려 다른 사람들도 확인할 수 있도록 해줍니다.

  4. 피드백이나 도움이 필요할 때, 그리고 merge 준비가 완료되었을 때는 pull request를 생성합니다

  5. 기능에 대한 리뷰와 논의가 끝난 후 master로 merge합니다

    CI도 통과하면 바로 기능이 투입됩니다

  6. master로 merge되고 push 되었을 때는, 즉시 배포되어야합니다

    master로 merge가 일어나면 자동으로 배포가 되도록 설정해놓니다

문의 사항이 있으시면 언제든지 개인 메일로 연락 주시기 바랍니다.

메일 보내기

© 2024. kimyoungho all rights reserved.