git 브랜치 전략

브랜치 전략이란?


브랜치 전략이란 여러 개발자가 협업하는 환경에서 git저장소를 효과적으로 활용하기 위한 work-flow를 의미합니다.
브랜치 전략을 사용하면 브랜치의 생성, 삭제, 병합이 자유료운 git의 유연한 구조를 활용하여 다양한 방식으로 소스관리를 할 수 있습니다.
자주 쓰이는 브랜치 전략은 2가지가 있습니다.

git-flow

그림1
5가지 브랜치를 이용해 운영하는 브랜치 전략입니다.
항상 유지되는 2개의 메인 브랜치와 역할을 완료하면 사라지는 3개의 보조 브랜치로 구성됩니다ㅏ.

  • 메인 브랜치 : 항상 유지됩니다.
    • master : 제품으로 출시될 수 있는 브랜치
    • develop : 다음 출시 버전을 개발하는 브랜치
  • 보조 브랜치 : merge 되면 사라집니다.
    • feature : develop 브랜치에 새로 추가할 기능을 개발하는 브랜치
    • release : develop 브랜치 개발이 완료되면 출시버전을 준비하면서 QA, TEST를 위해서 사용하는 임시 브랜치
    • hotfix : master 브랜치에서 발생한 버그를 수정하는 브랜치

개발 프로세스

그림2

  1. 개발자는 develop 브랜치로부터 본인이 개발할 기능을 위한 feature 브랜치를 만듭니다.
  2. feature 브랜치에서 기능을 만들다가, 기능이 완성되면 develop 브랜치에 merge합니다.


그림3

  1. 이번 배포 버전의 기능들이 develop브랜치에 모두 merge 됐다면, QA를 위해 release 브랜치를 생성합니다.
  2. release 브랜치에서 오류가 발생했다면 release 브랜치 내에서 수정합니다. QA가 끝나면, 해당 버전을 배포하기 위해 master 브랜치로 merge합니다. 만약 release 브랜치에서 bugfix가 있었다면 해당 내용을 반영하기 위해 develop 브랜치에도 merge 합니다.


그림4

  1. 만약 제품(master)에서 버그가 발생한다면, hotfix 브랜치를 만듭니다.
  2. hotfix 브랜치에서 버그 픽스가 끝나면, develop와 master 브랜치에 각각 merge 합니다.


git-flow 전략은 주기적으로 배포하는 서비스에 적합하며, 가장 유명한 전략인 만큼 많은 IDE가 지원합니다.

github-flow

master 브랜치와 pull request를 활용한 단순한 브랜치 전략입니다.
제품이 릴리즈되는 최신버전인 master브랜치만이 존재합니다.
그림5

  1. 기능, 개발, 버그 픽스, 혹은 어떠한 이유로든 branch를 생성합니다. git-flow처럼 체계적인 분류가 없기 때문에 브랜치 이름은 의도를 아주 잘 드러내도록 작성합니다.


그림6

  1. 개발을 진행하고 커밋 메시지는 상세하게 작성합니다.


그림7

  1. pull request를 생성합니다.


그림8

  1. 충분한 리뷰와 토의를 거칩니다.


그림9

  1. 리뷰가 끝나면 해당 내용을 실제 서버(혹은 테스트 환경)에 배포합니다.


그림10

  1. 이상이 없다면 master에 merge 후 push하고, 즉시 배포합니다.


github-flow는 브랜치 전략이 단순하여 git을 처음 접하는 사람에게도 유용합니다.
지속적인 통합과 배포가 자연스럽게 이뤄진다는 장점이 있습니다.

커밋 메시지 컨벤션

  • feat : 새로운 기능 추가
  • fix : 버그 수정
  • hotfix : 급하게 치명적인 버그 수정
  • docs : 문서 수정
  • style : 코드 포맷팅, 세미콜론 등의 스타일 수정(코드 자체 수정 X)
  • refactor : 프로덕션 코드 리팩토링
  • test : 테스트 코드, 테스트 코드 리팩토링
  • chore : 빌드 과정 또는 보조 기능(문서 생성 기능 등) 수정
  • rename : 파일 혹은 폴더명을 수정하거나 옮기는 작업만인 경우
  • remove : 파일을 삭제하는 작업만 수행한 경우
  • comment : 필요한 주석 추가 및 변경
// 커밋 작성 예시
type: subject

body

footer

body와 footer은 필요할 때만 적어도 되는 옵션에 해당한다고 보면 됩니다.

feat: 압축파일 미리보기 기능 추가

사용자의 편의를 위해 압축을 풀기 전에 다음과 같이 압축파일 미리보기를 할 수 있도록함
- 마우스 오른쪽 클릭
- 윈도우 탐색기 또는 맥 파인더의 미리보기 창

closes #125

closes 대신 사용할 수 있는 키워드가 여럿 존재합니다.

  • close
  • closed
  • fix
  • fixed

이외에도 여럿 존재하는데 아무거나 사용하면 됩니다.
이슈 여러 개를 한 번에 처리할 수도 있습니다.

... 생략

close #1, close #12





[10분 깃코톡] 🍟 웨지의 Git 브랜치 전략]


© 2021. By Backtony