JSP's Deep learning

[Git] Branch의 종류와 기능, 작명 본문

Etc/Git

[Git] Branch의 종류와 기능, 작명

_JSP_ 2023. 5. 9. 18:57

1. Branch란?

독립적인 작업을 수행하기 위한 개념으로 Git에서 생성되는 각각의 Branch독립적으로 존재하여 다른 Branch의 영향을 받지 않는다. 이러한 특성을 통해서 각각의 작업을 동시에 수행할 수 있으며, 모든 작업물을 Merge을 통해 통합할 수 있어서 협업에서 유용하게 사용된다. Branch는 대표적으로 master, develop, feature, release, hotfix가 존재한다.

[출처] https://backlog.com/git-tutorial/kr/stepup/stepup1_1.html

 

2. Branch의 종류 및 기능

2.1. master

(1) 설명

  • 제품 또는 서비스를 출시하는 브랜치
  • 제품 또는 서비스의 버전 관리(Tag)
  • master 브랜치는 항상 배포가능한 상태

(2) 예시

  • CARLA Simulator의 최신 배포가능 버전은 항상 master branch에 존재
  • 또한 CARLA Simulator을 업데이트 할 때마다 해당 업데이트 commit idTag을 생성하여 버전을 관리

CARLA 깃헙

(3) 작명

  • master branch의 경우, branch의 이름은 master로 항시 고정
  • master branchTag 이름제품 또는 서비스의 버전을 표기
    (
    서비스 버전의 표기는 유의적 버전 명세를 따른다)

2.2. develop

(1) 설명

  • 출시된 제품 또는 서비스의 다음 버전을 위해 개발하는 브랜치(개발 브랜치)
  • 개발한 기능 추가(기능 병합)

(2) 예시

  • Unity의 경우, 큰 모듈마다 develop branch가 존재하며, 별도의 프로젝트로 관리한다.(큰 모듈 하나당 하나의 프로젝트로 취급하여 dev branch가 메인 branch이고 각 버전이 Tag로 표기되어 있다)
  • Unreal Engine의 경우, 큰 모듈마다 develop branch가 존재하며, dev-모듈이름 형식으로 관리한다.

(3) 작명

  • develop branch의 경우, branch의 이름은 develop 또는 dev로 사용한다.
  • 만약, 큰 모듈별로 develop branch를 생성한다면, develop-모듈이름 또는 dev-모듈이름으로 사용한다.

2.3. feature

(1) 설명

  • 제품 또는 서비스의 세부 기능을 개발하는 브랜치
  • 기능 개발이 완료되면 dev branch에 병합
  • 최말단의 branch이므로 다른 branch와 공유될 필요가 없음(보통 로컬 저장소에서 사용)
  • 큰 기능의 경우, 원격 저장소에 dev branch로 생성하기도 함(Unreal, Unity ...)

(2) 예시

  • Unreal Engine의 경우 큰 기능에 대해서 dev-mobile과 같이 branch을 관리한다.
  • 대부분의 세부 기능들은 로컬 저장소에서 관리한다.

(3) 작명

  • 보편적으로 feature/기능요약과 같은 형태로 지정하며, feature/이슈번호-기능요약과 같이 사용하기도 한다.

2.4. release

(1) 설명

  • 제품 또는 서비스의 배포를 준비하는 브랜치
  • develop 브랜치에서 배포 가능 수준의 기능들이 병합되면, release 브랜치로 분기
  • release 브랜치에서는 버그 수정, 문서 추가 등의 배포와 관련된 작업이 진행
  • release 브랜치에서는 새로운 기능을 추가하지 않음
  • release 브랜치에서 배포 작업이 완료되고, 모든 기능에 대한 테스트가 완료되면 master 브랜치로 병합하며 최종 배포

(2) 예시

  • Apple은 각 버전에 대해서 release 브랜치를 사용

(3) 작명

  • release 브랜치는 보편적으로 release-버전 또는 release/버전의 형식으로 사용한다.

2.5. hotfix

(1) 설명

  • 출시된 제품이나 서비스에 발생한 버그를 수정하는 브랜치
  • master 브랜치에서 분기하여 관리
  • master 브랜치에서 발생한 버그를 수정하여 다시 master 브랜치 develop 브랜치 병합

(2) 예시

  • 보통 작은 버그에 대한 hotfix 브랜치는 로컬 저장소에서 생성한다.
  • 여러가지 기능에 복합적인 문제가 생긴 경우, pytorch와 같이 원격 저장소hotfix 브랜치를 생성하여 문제를 해결한다.

(3) 작명

  • 보편적으로 hotfix-버전의 형식으로 사용한다.

 

* 부록

 

A. 유의적 버전 명세

(1) 설명

  • 유의적 버전이란 버전.. 숫자로 표기하는 것
    • : 기존 버전과 호환되지 않게 API가 바뀌는 경우 "주 버전"을 올림
      (
      주 버전이 `0`인 경우는 초기 개발에서 허용되며 안정적 버전이 아님)
    • : 기존 버전과 호환되면서 새로운 기능을 추가하는 경우 "부 버전"을 올림
    • : 기존 버전과 호환되면서 버그를 수정한 경우 "수 버전"을 올림
  • 유의적 버전 명세를 따르는 이유는 의존성에 대해서 관리하기 위함이다.

 

(2) 예시

  • 기존 `1.9.11` 버전에서 새로운 기능을 추가하는 경우 => `1.10.0`
  • 기존 `1.9.11` 버전에서 버그를 수정한 경우 => `1.9.12`
  • 기존 `1.9.11` 버전에서 기존 버전과 호환되지 않게 API을 변경하는 경우 => `2.0.0`

 

'Etc > Git' 카테고리의 다른 글

[Git] Branch 활용 작업흐름  (0) 2023.05.09
[Git] Git push 충돌 시 해결 법  (0) 2022.07.24
Comments