Git FLOW

Git Flow는 소스코드를 관리하고 출시하기 위해 사용되는 Branch Management Strategy 이다. 다섯개의 브랜치가 소스코드 관리를 위해 사용된다.

1. master 브랜치

  • 현재 배포된 소스코드만이 담겨있는 브랜치, 어떠한 브랜치가 이 브랜치로 merge되었다는 것은, 병합된 브랜치의 기능의 구현과 테스트가 모두 끝났다는 이야기가 되며, 동시에 새로운 버전으로 바뀐다는 것을 의미하기도 한다.

2. develop 브랜치

  • 각 개발자가 작업할 내용의 기본이 되는 브랜치이자 각 개발자가 feature브랜치에서 작업한 내용이 작업되는 브랜치이다. 해당 브랜치가 안정화되면 마스터 브랜치로 병합(merge)할 준비를 하게된다.

3. feature 브랜치

  • 각 개발자 개인이 하나의 기능 구현을 위해 직접 개발한 내용을 입력하게되는 브랜치. 이 해당 기능의 구현과 안정화가 되면 develop 브랜치로 병합된다.

4. release 브랜치

  • develop브랜치에서 배포가 준비되면 바로 master로 병합하는게 아니고 release branch를 따게 된다. (필자가 일했던 회사에서는 이 브랜치를 QA브랜치라고 부르기도 했다.) 이 브랜치에서 QA가 End-To-End 테스트를 진행하게 되며, 발생하는 버그들과 자잘한 조정사항들을 적용한 후 최종적으로 master에 병합되는 것으로 배포가 완료된다.

5. hotfix 브랜치

  • 작성된 소스코드가 완료되고 난 후에도 이슈는 발생한다. 헌데 발생한 이슈의 중요도나 서비스 영향도가 크다면, hotfix 브랜치를 따고 해당 브랜치에서 문제를 임기응변으로 대처하든 근본적인 원인을 찾아서 해결하든 해결하게 된다. 중요한 것은 hotfix브랜치에서 작업한 내용이 계속적으로 master에 남아있게 된다면, 해당 소스코드는 develop브랜치에도 병합되어야 추후 release - master를 통하여 배포가 진행되어도, 이전에 발생했던 이슈가 재발생하지 않는다는 것이다.

687474703a2f2f646f67666565742e6769746875622e696f2f61727469636c65732f323031312f612d7375636365737366756c2d6769742d6272616e6368696e672d6d6f64656c2f6769742d6272616e6368696e672d6d6f64656c2e706e67.png