회사에서 깃허브를 사용하면서 좀 더 효율적으로 브랜치를 활용할 수 있는 방안을 찾아보다가 github flow라는 개발 전략을 알게 되었다.
보통 브랜치로 기능별로 브랜치를 만들어 개발한 후 main 브랜치에 merge후 배포하곤 했는데 github flow는 다섯가지 종류의 브랜치를 사용하여 개발한다.
브랜치 종류가 많으므로 그만큼 안전하다고 볼 수 있다.
github flow에서 사용하는 브랜치의 종류는 main, develop, feature, release, hoxfix 가 있다.
브랜치들의 역할
- main : 제품으로 출시될 수 있는 브랜치
- develop : 다음 출시 버전을 개발하는 브랜치
- feature : 기능을 개발하는 브랜치
- release : 이번 출시 버전을 준비하는 브랜치
- hotfix : 출시 버전에서 발생한 버그를 수정하는 브랜치
새로운 기능 개발
먼저, 상상을 해보자.
회사 A의 개발팀장은 0.9버전까지 그냥 되는대로 기능 개발을 해서 출시한 후, 1.0버전부터 제대로 개발하려고 마음을 먹었다.
이제 개발을 어떻게 해야할까?
기존 코드는 main 브랜치에 넣어둔다.
새로운 기능 개발은 main을 복사한 develop 브랜치에 하도록 한다.
이렇게 하면 기존 코드는 안전할 것이다.
각각의 기능 개발을 할 때도 develop 브랜치에 직접 푸쉬하는 것이 아니라 feature/manage(회원관리), feature/login(로그인)처럼 브랜치를 새로 만든 후 develop에 합치도록 한다.
출시 전 테스트하기
develop을 만든 후 완성물이 괜찮다면 release 브랜치를 생성한 후 여기에 merge한다.
release 브랜치는 출시 전에 여러가지 테스트를 해보고 고칠 부분이 있으면 고치고 완성이 되면 이 때 main 브랜치에 합친 후 배포한다.
release 후에는 develop에 release를 merge해준다.
당장 고쳐야 할 급한 버그가 생겼을 경우
main에서 hotfix 브랜치를 생성한 후 합쳐준다.
당장 고쳐야 하기 때문에 hotfix에서 빠르게 에러 수정 후 main에 합쳐 배포한다.
Trunk Based 전략
브랜치 하나만 잘 관리하자는 의미의 전략이다.
많은 스타트업들이 이러한 전략을 사용할거라 생각한다. (물론 우리 회사도^_^)
- main 하나만 운영하여 배포하도록 하고, 기능을 개발할 때마다 브랜치를 생성해준 뒤 main에 바로 합쳐준다.
- 테스트를 자동화하거나 배포를 자동화가 되어있는 프로젝트에서 유리한 전략이다.
- 안정화된 프로젝트에서 자주 쓴다.
- 장점은 소스코드가 한 곳에만 있어 관리가 용이하다.
- 단점은 많은 테스트가 필요하며, 자주 개발해야 한다.
참고
https://programming-oddments.tistory.com/294
https://techblog.woowahan.com/2553/
'Computer Engineering > github' 카테고리의 다른 글
git squash로 merge 깔끔하게 기록 남기기 (예제) (0) | 2022.10.12 |
---|---|
팀 개발을 위한 github 시작하기 (0) | 2022.07.27 |
[github] 커밋 하나 되돌리기 (revert, reset) (0) | 2022.06.23 |
[github] error: src refspec main does not match any (0) | 2022.05.21 |
[github] 로컬 프로젝트를 github 저장소에 올리기 (0) | 2022.05.18 |