Git branch 전략?

Ke Fa·2022년 10월 4일

우선 명의된 내용에 따르면

브랜치 전략이란 여러 개발자가 하나의 저장소를 사용하는 환경에서 저장소를 효과적으로 활용하기 위한 work-flow다. 브랜치의 생성, 삭제, 병합 등 git의 유연한 구조를 활용해서, 각 개발자들의 혼란을 최대한 줄이며 다양한 방식으로 소스를 관리하는 역할을 한다.

라고 하는데, 많은 현업에서 사용되는 전략으로

• gitflow: master(ready), develop, feature(개개인의 개발), release, hotfix(bug) 브랜치를 설정하고 운영하는 방식
• github flow: main(master), feature 브랜치만으로 운영하는 방식

두가지를 말할 수 있다.

조직의 규모가 클 경우 gitflow를 채택하며 빠른 개발을 필요로하는 스타트업이나 규모가 작은 조직에선
github flow를 채택한다.

gitflow?


* 브랜치 전략이란 여러 개발자가 하나의 저장소를 사용하는 환경에서 저장소를 효과적으로 활용하기 위한 work-flow다. 
* 브랜치의 생성, 삭제, 병합 등 git의 유연한 구조를 활용해서, 각 개발자들의 혼란을 최대한 줄이며 다양한 방식으로 소스를 관리하는 역할을 한다.

즉, 브랜치 생성에 규칙을 만들어서 협업을 유연하게 하는 방법론을 말한다.

* 5가지 중, 항시 유지되는 메인 브랜치 master, develop 2가지와 merge 되면 사라지는 보조 브랜치 feature, release, hotfix 3가지로 구성된다.

github flow?

* Git flow가 좋은 방식이지만 GitHub에 적용하기에는 복잡하다는 Scott Chacon의 판단에 따라 만들어진 새로운 깃 관리 방식이다.
* 자동화 개념이 들어가 있다라는 큰 특징이 존재하며 만일 자동화가 적용되어 있지 않은 곳에서만 수동으로 진행하면 된다.
* Git flow에 비해 흐름이 단순해짐에 따라 그 규칙도 단순해졌다.
* 기본적으로 master branch에 대한 규칙만 정확하게 정립되어 있다면 나머지 가지들에 대해서는 특별한 관여를 하지 않으며 pull request기능을 사용하도록 권장한다.

github florw의 특징

* release branch가 명확하게 구분되지 않은 시스템에서의 사용이 유용하다.
* GitHub 자체의 서비스 특성상 배포의 개념이 없는 시스템으로 되어있기 때문에 이 flow가 유용하다.
* 웹 서비스들에 배포의 개념이 없어지고 있는 추세이기 때문에 앞으로도 Git flow에 비해 사용하기에 더 수월할 것이다.
* hotfix와 가장 작은 기능을 구분하지 않는다.
* 모든 구분사항들도 결국 개발자가 전부 수정하는 일들 중 하나이기 때문이다.
이 대신 구분하는 것은 우선 순위가 어떤 것이 더 높은지에 대한 것이다

[브랜치 전략을 사용하는 이유와 요령]

• 하나의 프로젝트 소스코드를 여러 개발자가 다루면서 발생하는 각종 부작용을 해결하자
• 개발 협업을 원활하게 하기 위한 약속
• 전략을 세울 때 고려할 수 있는 요소들
• 이 브랜치는 제품으로 내보낼 수 있는가?
• 이 브랜치는 빌드 실패를 허용하는가?
• 이 브랜치는 테스트 실패를 허용하는가?
• 이 브랜치는 임시로 운영하는가? 유지하지 않고 수시로 삭제하는가?

reference link(참고)

https://github.com/nvie/gitflow
https://docs.github.com/en/get-started/quickstart/github-flow

profile
프로그래밍 공부정리용

0개의 댓글