Tag
tag는 특정 커밋에 버전을 기록할 때 사용하는 기능이다.
tag는 lightweight tag와 annotated tag 2가지 종류로 나뉜다.
- lightweight tag는 버전만 기록하는 기본적인 tag이다. 예) v1.0.0
- annotated tag는 tag에 추가적인 정보를 기록하는 tag이다.
lightweight tag는 git tag <tag 이름>으로 생성할 수 있다.
생성한 tag를 원격 저장소에 등록하기 위해서는 git push origin <tag 이름>으로 등록할 수 있다.
annotated tag는 -a 옵션을 사용하여 추가적인 정보를 기록할 수 있다.
git log 명령어를 통해 commit에 등록된 tag를 확인할 수 있다.
git show <tag 이름>으로 tag의 정보를 확인할 수 있다.
원격 저장소에 등록된 tag를 기반으로 GitHub에서 release 버전을 기록할 수 있다.
저장소 우측의 Releases에서 Create a new release를 클릭한다.
Choose a tag 버튼을 눌러 등록한 tag를 선택할 수 있다.
release 제목과 설명을 적고, Publish release 버튼을 눌러 release 버전을 등록할 수 있다.
Semantic Versioning
Semantic Versioning은 {major 버전}.{minor 버전}.{patch 버전}의 형태로 표기한다.
ex) 16.12.3
- major 버전: 기존 API가 변경 또는 삭제되거나 하위 버전과 호환이 되지 않는 버전
- minor 버전: 신규 기능이 추가되거나 개선되고, 하위 버전과 호환이 되는 버전
- patch 버전: 버그가 수정되고, 하위 버전과 호환이 되는 버전
Semantic Versioning 규칙
- 특정 버전으로 패키지를 배포하고 나면, 그 버전의 내용은 절대 변경하지 않는다. 변경점이 있다면 반드시 새로운 버전으로 배포한다.
- major 버전이 0인 버전은 초기 개발을 위해 사용한다. (예를 들어, 0.0.1 버전)
- patch 버전은 반드시 이전 버전의 API와 호환되는 버그 수정의 경우에만 올린다. 버그 수정은 잘못된 내부 로직을 고치는 것이라 정의한다.
- minor 버전은 (1)이전 버전과 호환되는 새로운 기능을 추가하거나, (2)공개 API의 일부를 앞으로 제거할 것(deprecate)으로 표시하는 경우, (3)내부 비공개 코드에 새로운 기능이 대폭 추가되거나 개선사항이 있을 때 올린다. patch 버전급 변화를 포함할 수 있다.
- major 버전은 이전 버전과 호환되지 않는 변화가 있을 때 올린다. minor 버전급 또는 patch 버전급 변화를 포함할 수 있다.
- major 버전을 올리면 minor 버전과 patch 버전을 0으로 초기화하고, minor 버전을 올리면 patch 버전을 0으로 초기화한다.
'GitHub' 카테고리의 다른 글
GitHub 협업 가이드 - Pull Request (0) | 2023.06.02 |
---|---|
GitHub 협업 가이드 - Issue (0) | 2023.05.27 |
GitHub 협업 가이드 - Commit Convention & Pre-commit (1) | 2023.05.26 |
GitHub 협업 가이드 - 브랜치 전략 (0) | 2023.05.17 |