1. 개요

개발을 하다보면 코드를 여러 버전으로 복사해야 할 일이 생긴다. 그래서 코드를 통째로 복사하여 원래 코드와 무관하게 별도로, 독립적으로 개발을 진행하게 되는데 이것이 브랜치이다.

브랜치는 버전 관리 시스템들이 가지고 있는 특징인데 Git의 브랜치는 무엇보다 쉽다. 

브랜치 종류는 다음과 같다. 이어서 자세히 설명한다.

  1. Master
  2. Develop
  3. Feature
  4. Release
  5. Hotfix

2. Git 브랜치 과정

Git은 데이터를 Change set이나 diff로 관리하는 것이 아니라 snapshot 단위로 관리한다. 

커밋을 하게 되면 현재 Staging area에 있는 데이터의 snapshot의 포인터, 커밋 메시지 등의 메타정보, 이전 커밋에 대한 포인터를 포함하는 커밋 개체(object)를 저장한다. 최초 커밋을 제외한 커밋은 이전 커밋 포인터가 있고, 이전 커밋 포인터가 있기 때문에 현재 커밋이 무엇이 바뀌었는지 알 수 있다. 브랜치를 합친 merge 커밋같은 경우는 이전 커밋 포인터가 여러개 있다. 


3. 종류

3.1. Master Branch

  • 제품으로 출시뇔 수 있는 브랜치
  • 배포(Release) 이력을 관리하기 위하여 사용
  • 배포 가능한 상태만을 관리

3.2. Develop Branch

  • 다음 출시 버전을 개발하는 브랜치
  • 평소에는 이 브랜치를 기반으로 개발 진행
  • 모든 기능이 추가되고 버그가 수정되어 배포 가능한 안정적인 상태가 되면 develop 브랜치를 master 브랜치에 merge

3.3. Feature Branch

  • 새로운 기능 개발이나 버그 수정이 필요하게 되면 develop 브랜치에서 분기됨
  • 이 브랜치는 공유가 필요없기 때문에 로컬 저장소를 사용
  • 개발이 완료되면 develop 브랜치로 merge 후 다른 사람과 공유

3.4 Release branch

  • 출시 버전을 준빌하는 브랜치
  • 배포를 위한 전용 브랜치로 한팀이 배포를 준비하는 동안 다른 팀은 배포를 위한 기능 개발이 가능, 따라서 개발 단계를 정의하기에 용이

3.5 Hotfix branch

  • 출시 버전에서 발생한 버그를 수정하는 브랜치
  • 배포 버전에 긴급 수정이 필요한 경우 master 브랜치에서 분기, 그 이유는 develop 브랜치에서 분기하여 수정/배포하기는 시간적 여유도 없고 안정성을 보장하기도 어렵기 때문