나동호,Sungjin Kang 님의 블로그를 보고 정리하였습니다. https://woowabros.github.io/experience/2017/10/30/baemin-mobile-git-branch-strategy.html https://ujuc.github.io/2015/12/16/git-flow-github-flow-gitlab-flow/
1. Branch란?
- 독립적으로 어떤 작업을 진행하기 위한 개념. 필요에 의해 만들어지는 각각의 브랜치는 다른 브랜치의 영향을 받지 않기 때문에, 여러 작업을 동시에 진행할 수 있음.
- 병합을 통해 작업한 내용을 다시 새로운 하나의 브랜치로 모을 수 있다. 이를 통해 여러 작업을 진행할 때의 작업 흐름을 한눈에 파악할 수 있다.
- 통합브랜치
- 언제든 배포할 수 있는 버전을 만들 수 있어야 하는 브랜치. 늘 안정적인 상태를 유지하는 것이 중요하다.
- 토픽 브랜치
- 기능 추가나 버그 수정과 같은 단위 작업을 위한 브랜치. 통합 브랜치로부터 만들어 내며, 토픽 브랜치에서 특정 작업이 완료되면 다시 통합 브랜치에 병합하는 방식
2. GitFlow
- GitFlow GitFlow 는 Vincent Driessen이 만든 Git의 분기 모델입니다. 협업 및 개발 팀 확장에 매우 적합하기 때문에 많은 관심을 끌었습니다.
- 브랜치종류
-
master : 제품으로 출시될 수 있는 브랜치
- develop : 다음 출시 버전을 개발하는 브랜치
- feature : 기능을 개발하는 브랜치
- realease : 이번 출시 버전을 준비하는 브랜치
- hotfix : 출시 버전에서 발생한 버그를 수정하는 브랜치
-
- 흐름
- mater 브랜치에서 devlop 브랜치를 만들어 다음 버전을 준비한다.
- devlop 브랜치에서 feature 브랜치를 만들어 작성한 내용을 devlop 브랜치에 병합하여 기능을 추가한다. 이 과정에서 발생한 버그들은 develop 브랜치에서 수정하여 commit을 이어간다.
- devlop 브랜치에서 계획한 기능 개발이 완료되면 release 브랜치에 버그를 수정하며 출시를 준비한다.
- release 브랜치에서 버그를 모두 수정하면 master 브랜치에 병합하여 다음버전을 출시한다.
- master 브랜치에서 발생한 버그는 hotfix 브랜치를 만들어 버그를 수정하여 develop브랜치에 병합하여 다음 버전에 적용시킨다.
- 장단점
- 명령어가 나와있다. 플러그인으로 존재한다.
- 브랜치가 많아 복잡하다. 불필요한 브랜치가 존재한다.
3. GitHubFlow
- GitHubFlow
Scott chacon은 GitHub Flow에서 Git flow가 좋은 방식이긴 하지만 GitHub에서 사용하기에는 복잡하다 여겨 사용하지 않고 GitHubFlow라는 내용으로 사용을 하고 있다고 한다. 그리고 자동화의 개념이 들어가 있다는 점. 자동화가 안되어있는 곳에서는 수동으로 관련 작업을 진행하면 된다.
- 특징 및 사용법
- relase 브랜치가 명확하지 않은 시스템에서 사용에 맞게 되어있다.
- master 브랜치는 항상 최신상태이다. stable 상태이고 production되는 브랜치이다.
- feature와 develop브랜치가 없다. 각 브랜치마다 기능과 버그에 관한 자세한 이름을 가지고 있어야한다.
- 원격 저장소에 수시로 push한다.
- 피드백과 도움, 병합 준비가 완료되었을때는 pull request 를 생성하여 코드를 리뷰하고 준비가 되면 master 브랜치에 반영한다.
- master에 병합되면 즉시 배포된다.
- 장단점
- 전략이 단순하여 처음 사용할 때 좋다.
- GitHub 사이트에서 제공하는 기능을 모두 사용하여 작업을 진행한다.
- 코드 리뷰를 자연스럽게 사용한다.
- CI/CD 가 되어있지 않은 시스템에서는 사람이 관련 업무를 진행한다.
- 너무 많은 것들이 올라왔을 때 혼잡하다.
정리
원래는 GitFlow를 적용하여 프로젝트를 진행하려는 계획으로 이글을 작성하려 했는데 이번에 GitHubFlow와 GitLapFlow를 새로 알게 되었다. GitHubFlow는 너무 간단하여 함께 정리 하였지만 GitLabFlow는 다음에 이슈트래킹과 함께 정리해 보려한다. GitFlow를 프로젝트에 반영하려 devlop브랜치를 만들고 좀 더 공부하여 제대로 적용할 예정 이었지만 보다 간단한 GitHubFlow를 적용하는 방식도 고려해 봐야겠다.
'Git' 카테고리의 다른 글
Gitlab과 GitlabFlow (0) | 2020.08.16 |
---|---|
Git- Git과 GitHub란 (0) | 2020.07.19 |