본문 바로가기
개발도구/Git

Git branch 전략

by eeeun:) 2022. 8. 31.
반응형

업을 할 때 개발자들을 브랜치를 나눠서 개발을 한다.
그럼 브랜치를 어떻게 나누고 어떻게 관리할까?

브랜치의 전략에는 크게 git flow, gitlab flow, github flow 가 있다.

 

 

 

" git flow "

 

  • master : 기준이 되는 브랜치로 제품을 배포하는 브랜치. 한마디로 메인 브랜치.
  • develop : 개발 브랜치로 개발자들이 이 브랜치를 기준으로 각자 작업한 기능들을 Merge.
  • feature : 단위 기능을 개발하는 브랜치로 기능 개발이 완료되면 develop 브랜치에 Merge.
  • release : 배포를 위해 master 브랜치로 보내기 전에 먼저 QA(품질검사)를 하기 위한 브랜치.
  • hotfix : master 브랜치로 배포를 했는데 버그가 생겼을 때 긴급 수정하는 브랜치.

 

 

git flow를 실제로 사용하고 있는 배민 안드로이드 개발팀 기술 블로그!
https://techblog.woowahan.com/2553/

develop과 feature를 나눠가면서 브랜치를 만들 정도로 큰(?) 프로젝트를 해보지 않아 실제 사용 예시를 봐도 git flow를 써야 되는 이유를 아직 모르겠다.

 

 

git flow의 flow chart 예시이다. 그냥 굉장히 복잡하다...

 

 

 

" github flow "

github에서 git flow를 사용하려는데, develop이나 feature 등 관리해야 될 브랜치가 너무 많고 복잡해서

git flow를 github에서 사용하기 간단하게 간소화한 브랜치 전략.


위의 git flow에서 feature, develop, hotfix 브랜치가 따로 존재하지 않음.
(어떤 참고자료는 feature 브랜치가 있고 어떤 곳에는 hotfix가 있음. 그냥 이름을 딱히 구분하지 않고 하나로 퉁친다? 는 말 같음)

 


하나의 브랜치를 만들어 master에 바로 merge 하는 방식.
(브랜치를 생성하는 기준은 팀마다 다른 듯. 이슈 단위가 될 수 있고, 기능 단위 등등)

 

 

github flow는 시시각각 master에 merge 될 때마다 배포가 이루어지는 것이 좋다고 한다.

(github flow에서는 matser = 최신 버전이기 때문에)
-> CI/CD를 통한 배포 자동화를 적용하는 것이 좋다.
-> pull request에서 팀원 간의 충분한 리뷰와 피드백이 진행되지 않으면 배포된 자체에서 버그가 발생할 수 있으므로 주의해야 한다.

 

 

flow chart를 봐도 github flow가 master branch와 개발하는 브랜치만 사용하여 훨씬 간편한 걸 확인할 수 있음.

 

 

 

" gitlab flow "

복잡한 git flow + 아주 간단한 github flow = gitlab flow라고 한다. 복잡하지는 않지만 효율적이기 위해 만든 브랜치.

 

  • production 브랜치 = git flow의 master 브랜치 = 최신 버전의 배포 브랜치
  • feature 브랜치 = 모든 기능이 구현되는 브랜치
  • master 브랜치 = git flow의 develop 브랜치 = feature에서 병합된 내용을 테스트하여 production 브랜치에 merge 함.

 

production브랜치는 master 이상 권한만 push 가능하다.

확실히 git flow는 정리가 잘 되어 있지만 쓰기에는 복잡했고, github flow는 정말 간단하지만 정리가 잘 안 되어있는 느낌..?

내가 정리해서 적으면서도 깔끔하지 못했는데 gitlab flow는 브랜치가 명확히 구분되어있고 간단한 느낌!

 

github flow = 개발브랜치(기능 구현) -> master branch
gitlab flow = feature branch(기능 구현) -> master branch(기능 test) -> production branch

 

gitlab flow는 github에서 기능을 구현하고 배포 전 테스트를 해보는 브랜치가 있어 github flow보다 안전하다고 느낌!

 

 

 

gitlab flow는 꼭 gitlab에서만 쓰고, github flow는 꼭 github에서만 쓰는지 궁금한데 아직 궁금증을 해결하지 못함.

728x90

댓글