이번에는 Git 브랜치 전략 중 하나인 Git-Flow를 알아보려고 합니다.
말 그대로 깃 브랜치들에 전략(=규칙)을 부여하는 것임.
각 브랜치로부터 어떤 브랜치들을 생성할건지, 각 브랜치가 어디서 분기되어서 생성될건지, 각 브랜치는 다시 어떤 브랜치로 병합되어야 하는지 등등 각 브랜치 별 규칙을 정하는 것을 말한다.
좀 더 정리하자면, Git 브랜치 전략 = 브랜치 네이밍 컨벤션 정하기 + 각 브랜치 별 전략(각 브랜치에서 어떤 종류의 브랜치가 나오고 들어올지 등) 정하기
왜 이런 브랜치 전략이 필요할까? 이런 브랜치 전략이 없다면, 팀원들 간 저장소 내에서 브랜치를 관리하는데 어려움을 겪을 것이다.
때문에 각 브랜치에서는 어떤 이름의 브랜치를 만들것인지, 그리고 이렇게 만들어진 브랜치는 다시 언제 어디로 다시 합쳐지게 될 것인지를 명확히 정해야할 필요가 있다.
대표적으로 두 가지의 깃 브랜치 전략이 있다. 이 두 가지를 한 번 알아보도록 하자.
아래는 Git Flow의 설명을 담은 그림임.
Git Flow는 릴리즈 브랜치를 둠으로써 버전 상태 관리에 힘쓰고 있다는 것이 한 눈에 보인다. 즉, 버전을 배포 환경과 동기화 시키는 것을 중요시 여기는 앱 개발에서는 사용할만하지만, 버전이 항상 최신상태로 유지되는 웹에서는 적절하지 않다는 것을 말한다. 그리고 이것의 대안으로 GitHub Flow를 제안하고 있다.
Git Flow가 깃헙에서 사용하기 복잡하다는 이유로 등장했다고 함. 또한, Git Flow를 제안한 사람도 앱 같은 버전 동기화가 중요한 프로젝트가 아니라면 GitHub Flow같은 간단한 전략을 사용하라고 말하고 있다.
우선, GitHub Flows는 브랜치 종료를 단 두 종류로 밖에 구분하지 않는 간단한 깃 브랜칭 전략이라고 한다.
GitHub Flow의 장점은 단순하기 때문에 복잡하지 않고, 자동 배포에 대해서도 쉽게 적용 가능하다는 것이 있다.
결론
사실 깃 브랜칭 전략이라는 것 자체가 디자인 패턴과도 같다고 생각한다. 우리의 프로젝트 상황에 따라 얼마든지 우리가 원하는 형태로 바꿔도 된다고 생각한다.
GitHub Flow가 너무 간단해서 배포, 릴리즈 등의 복잡한 이슈를 보완하기 위해 나온 전략이라고 함.
GitHub Flow의 master 브랜치에서 바로 배포되는 그 과정의 중간에 PRE-PRODUCTION 단계의 브랜치를 하나 놓는 것.
참고
https://techblog.woowahan.com/2553/
https://ksh-coding.tistory.com/109
https://brownbears.tistory.com/605