git flow

2023. 2. 7. 19:57프로그래밍/Git

    목차

trunk: 하나의 중심 브랜치로만 관리하는 것

trunk based flow: 하나의 중심 브랜치에서 필요할 때만 브랜치를 분기하는 것

 

Git flow

(사진 출처: https://www.youtube.com/watch?v=w2r0oLFtXAw )

master, develop 브랜치는 영구적으로 존재함

hotfix, felease, feature 브랜치는 필요할 때마다 만들고, 머지 후에 삭제함

feature --> develop --> release --> master

 

  • 큰 규모의 팀에 유용
  • 퀄리티 보장이 중요한 프로덕트에 유용
  • release 된 프로덕트에 대한 관리 사이클이 긴 경우 유용

 

master 브랜치 (main 브랜치)

소비자가 사용하는 제품이 존재하는 브랜치

release 브랜치로부터 pull request 받음

  • 부모 브랜치: X
  • 자손 브랜치: hotfix, develop
  • PR 받는 브랜치: release
  • PR 보내는 브랜치: X

 

hotfix 브랜치

배포된 서비스에 대한 긴급 버그 수정을 진행하는 브랜치

hotfix-* 형태로 이름을 지정해서 만듦

수정 완료 시 develop, master 브랜치에 각각 PR 을 보냄

  • 부모 브랜치: master
  • 자손 브랜치: X
  • PR 받는 브랜치: X
  • PR 보내는 브랜치: develop, master

 

release 브랜치

배포 전에 테스트하는 브랜치

release-* 형태로 이름을 지정해서 만듦

테스트 완료 시, develop, master 브랜치에 각각 PR 을 보내고, PR merge 완료 시 브랜치 삭제

  • 부모 브랜치: develop
  • 자손 브랜치: X
  • PR 받는 브랜치: X
  • PR 보내는 브랜치: develop, master

 

develop 브랜치

개발 단계의 코드가 있는 브랜치

개발 자체는 feature 브랜치에서 진행하고, 하나의 기능 구현이 완료되면 develop 브랜치로 PR 을 보냄

이러한 과정을 반복하여 특정 단계까지 개발이 완료되면 develop 브랜치를 베이스로 테스트를 위한 release 브랜치를 새로 만듦

  • 부모 브랜치: master
  • 자손 브랜치: feature, release
  • PR 받는 브랜치: feature
  • PR 보내는 브랜치: X

 

feature 브랜치

특정한 기능을 구현하는 브랜치

feature/기능명 형태로 이름을 지정해서 만듦

기능 구현 완료 시, develop 브랜치로 PR 을 보내고, merge 후 브랜치 삭제

  • 부모 브랜치: develop
  • 자손 브랜치: X
  • PR 받는 브랜치: X
  • PR 보내는 브랜치: develop

 

Github flow

(사진 출처: https://www.youtube.com/watch?v=w2r0oLFtXAw )

배포용 브랜치인 master, 각 단위 기능 구현 브랜치인 feature 로 구성됨

feature 브랜치는 merge 후 삭제됨

  • 작은 규모의 팀에서 유용
  • release 된 프로덕트에 대한 관리 사이클이 짧은 경우 유용 (업데이트가 짧은 경우)
  • 빠른 배포와 관리가 필요한 경우 유용

 

master 브랜치 (main 브랜치)

소비자가 사용하는 제품이 존재하는 브랜치

push 를 받으면 자동으로 실제 서비스로 배포되도록 설정되어 있음

feature 브랜치에서 단위 기능 구현이 완료될 때마다 PR 을 받음

  • 부모 브랜치: X
  • 자손 브랜치: feature
  • PR 받는 브랜치: feature
  • PR 보내는 브랜치: X

 

feature 브랜치

특정한 기능을 구현하는 브랜치

git flow 보다 더욱 구체적이고 명확하게 작업명을 작성해서 만듦

기능 구현 완료 시, master 브랜치로 PR 을 보내고 merge 후 브랜치 삭제

  • 부모 브랜치: master
  • 자손 브랜치: X
  • PR 받는 브랜치: X
  • PR 보내는 브랜치: master

 

Gitlab Flow

테스트를 위한 브랜치가 없고, 배포용 브랜치가 따로 없기 때문에 큰 규모의 서비스에 부적합함

github flow 의 단순함과 git flow 의 체계적인 관리를 절충적으로 합친 방식

pre-production 브랜치가 테스트를 담당하고 master 브랜치가 개발용 브랜치로 역할함

feature 브랜치는 merge 후 삭제됨

  • 중간 규모의 팀에 유용
  • 퀄리티 보장이 중요한 프로덕트에 유용
  • 빠른 배포와 관리가 필요한 경우 유용

 

production 브랜치

소비자가 사용하는 제품이 존재하는 브랜치

pre-production 브랜치로부터 PR 을 받음

  • 부모 브랜치: master
  • 자손 브랜치: X
  • PR 받는 브랜치: pre-production
  • PR 보내는 브랜치: X

 

pre-production 브랜치

배포 전에 제품을 테스트하는 브랜치

테스트 완료 후 production, master 브랜치에 각각 PR 을 보냄

  • 부모 브랜치: master
  • 자손 브랜치: X
  • PR 받는 브랜치: master
  • PR 보내는 브랜치: production, master

 

master 브랜치 (main 브랜치)

개발 단계의 코드가 있는 브랜치

개발 자체는 feature 브랜치에서 진행하고, 하나의 기능 구현이 완료되면 master 브랜치가 PR 을 받음

이러한 과정을 반복하면서 특정 단계까지 개발이 완료되면, pre-production 으로 PR 을 보냄

  • 부모 브랜치: X
  • 자손 브랜치: feature
  • PR 받는 브랜치: feature, pre-production
  • PR 보내는 브랜치: pre-production

 

feature 브랜치

특정한 기능을 구현하는 브랜치

브랜치명은 github flow 처럼 자세하게 작성함

기능 구현 완료 시, master 브랜치로 PR 을 보내고 merge 후 브랜치 삭제

  • 부모 브랜치: master
  • 자손 브랜치: X
  • PR 받는 브랜치: X
  • PR 보내는 브랜치: master

 

  • 배포용 브랜치 deploy
  • 테스트용 브랜치 test
  • 개발용 브랜치 main
  • 기능개발용 브랜치 feature

큰 규모가 아니라면 이 정도로 사용하는 것이 좋음