본문 바로가기
형상관리

[Git]Git Flow와 GitHub Flow

by 슈슈슉민 2023. 6. 14.

왜?

많은 사람들과 일을 할 때, 새로운 코드를 통합하기 위해서는 형상관리 flow의 이해가 필요하다. 크게는 Git Flow와 GitHub Flow를 많이 쓰기 때문에 이 두 개에 대해 짤막하게 알아보자.

 

Git Flow 

  Git Flow는 Vincent Driessen 이 제안한 브랜치 관리 전략으로, 여러 개발자가 같은 프로젝트를 진행할 때 효과적으로 관리하도록 도와준다.

 

  Git Flow에서는 브랜치를 다음과 같이 5가지 유형으로 분류한다.

  • Master(main): 항상 준비된 배포 가능한 상태의 브랜치이다.
  • Develop: 개발자들이 일하는 브랜치, 여기서 기능을 추가하고 버그를 수정한다.
  • Feature: 개별 기능 개발을 위한 브랜치, Develop에서 분기하고 Develop에 병합한다.
  • Release: 배포를 준비하는 브랜치, Develop에서 분기하고 Master와 Develop에 병합한다.
  • Hotfix: 긴급한 버그 수정을로 위한 브랜치, Master에서 분기하고, Master와 Develop에 병합한다.

이미지 출처 : https://blog.kinto-technologies.com/posts/2023-03-07-From-Git-flow-to-GitHub-flow/

 

GitHub Flow

  GitHub Flow 는 GitHub에서 제안한 브랜치 관리 전략이다. Git Flow보다 비교적 단순하고 직관적인 프로세스를 제공하며, 소프트웨어가 지속적으로 배포되는 환경에서 사용하기 좋다.

 

  GitHub Flow 는 다음과 같은 과정을 포함한다.

  1. 새로운 작업을 시작할 떄 'master' 브랜치에서 새로운 브랜치를 생성한다. 이 브랜치는 작업 내용을 설명하는 짧고 명확한 이름을 가져야 한다.
  2. 새로운 브랜치에서 코드를 추가하거나 수정한다. 이때, 작업 내역을 자주 커밋하는 것이 좋다. 이렇게 하면 작업의 히스토리를 추적하기 쉽고, 문제가 발생했을 때 이를 해결하기 용이하다.
  3. 작업이 완료되면, 브랜치를 원격 저장소(GitHub)에 푸시한다. 그런 다음, 이 브랜치에 대해 Pull Request를 생성한다. 이는 다른 팀원들에게 코드 리뷰를 요청하는 것이다.
  4. 팀원들이 코드를 리뷰하고, 피드백을 제공한다. 필요한 경우, 브랜치에 추가적인 커밋을 통해 피드맥을 반영할 수 있다.
  5. 모든 피드백이 반영되고, 코드가 정상적을로 동작한다면 'master'브랜치로 병합한다. 이때, GitHub에서 제공하는 'Merge' 버튼을 사용하여 쉽게 병합할 수 있다.
  6. 마지막으로, 'master'브랜치에 병합된 코드를 즉시 배포한다. 이 방법으로, 새로운 변경 사항을 빠르게 고객에게 전달할 수 있다.

Git Flow는 복잡할 수 있고 GitHub Flow는 이해하고 적용하기 쉽다는 장점이 있지만 복잡한 프로젝트 에서는 여러 가지 배포 버전을 관리해야 할 때 Git Flow와 같은 전략이 필요할 수 있다.

 

나의 경우는..

최대 3명에서 하는 프로젝트들만 해온 나로써는 GitHub Flow가 더 쓸만했다. main banch를 하나만 쓰면 충돌도 줄어들고 그렇기 때문에 작업 속도가 빨라졌기 때문이다. 한편 Git Flow가 주는 장점들을 보니 좀 더 복잡할 가치가 있다는 생각이 들었다.