일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 커스텀 애니메이션 적용
- object detection
- InstructPix2Pix
- VOC 변환
- DOTA dataset
- Branch 활용 개발
- 객체 탐지
- 논문 분석
- Linux build
- Paper Analysis
- Object Detection Dataset 생성
- TensorFlow Object Detection Error
- 논문분석
- 리눅스 빌드
- DACON
- Custom Animation
- Docker
- Towards Deep Learning Models Resistant to Adversarial Attacks
- paper review
- CARLA simulator
- 크롤링
- 기능과 역할
- TensorFlow Object Detection 사용예시
- 개발흐름
- TensorFlow Object Detection Model Build
- 사회초년생 추천독서
- AI Security
- TensorFlow Object Detection API install
- Carla
- Git
Archives
- Today
- Total
JSP's Deep learning
[Git] Branch의 종류와 기능, 작명 본문
1. Branch란?
독립적인 작업을 수행하기 위한 개념으로 Git에서 생성되는 각각의 Branch는 독립적으로 존재하여 다른 Branch의 영향을 받지 않는다. 이러한 특성을 통해서 각각의 작업을 동시에 수행할 수 있으며, 모든 작업물을 Merge을 통해 통합할 수 있어서 협업에서 유용하게 사용된다. Branch는 대표적으로 master, develop, feature, release, hotfix가 존재한다.
2. Branch의 종류 및 기능
2.1. master
(1) 설명
-
제품 또는 서비스를 출시하는 브랜치
- 제품 또는 서비스의 버전 관리(Tag)
- master 브랜치는 항상 배포가능한 상태
(2) 예시
- CARLA Simulator의 최신 배포가능 버전은 항상 master branch에 존재
- 또한 CARLA Simulator을 업데이트 할 때마다 해당 업데이트 commit id에 Tag을 생성하여 버전을 관리
(3) 작명
-
master branch의 경우, branch의 이름은 master로 항시 고정
- master branch의 Tag 이름은 제품 또는 서비스의 버전을 표기
(서비스 버전의 표기는 유의적 버전 명세를 따른다)
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