GitHub

GitHub 협업 가이드 - Tag

sangwonYoon 2023. 6. 3. 19:57

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의 정보를 확인할 수 있다.

lightweight tag
annnotated tag는 추가적인 정보를 확인할 수 있다.

원격 저장소에 등록된 tag를 기반으로 GitHub에서 release 버전을 기록할 수 있다.

저장소 우측의 Releases에서 Create a new release를 클릭한다.

Choose a tag 버튼을 눌러 등록한 tag를 선택할 수 있다.

release 제목과 설명을 적고, Publish release 버튼을 눌러 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으로 초기화한다.