그럼에도 불구하고

👨‍💻

[Git, GitHub] Tag에 대하여 알아보자 본문

이모저모/Git, GitHub

[Git, GitHub] Tag에 대하여 알아보자

zenghyun 2023. 7. 27. 17:34

 

Tag에 대해 알아보겠습니다.

 

🧑🏻‍💻  Semantic Versioning

Semantic version 지정 사양은 소프트웨어 release를 위한 표준화된 버전 지정 시스템을 설명합니다. 개발자가 소프트웨어 릴리스에 의미를 부여할 수 있는 일관된 방법을 제공합니다.

 

버전은 마침표로 구분된 세 개의 숫자로 구성됩니다.

2.4.1 

2: MAJOR RELEASE
4: MINOR RELEASE
1: PATCH RELEASE

 

 

📌 Initial Release

일반적으로 첫 번째 release는 1.0.0으로 시작합니다.

 

⭐️ Patch Release

Patch Release는 일반적으로 새로운 기능이나 중요한 변경 사항이 포함되어 있지 않습니다. 일반적으로 코드 사용 방식에 영향을 미치지 않는 버그 수정 및 기타 변경 사항을 나타냅니다. 

Patch Release 전
v1.0.0

Patch Release 후
v1.0.1

 

⭐️ Minor Release

Minor Release는 새로운 기능이 추가되었음을 의미하지만 프로젝트는 여전히 이전 버전과 호환됩니다. 주요 변경 사항이 없습니다. 

또한, 새로운 기능은 선택 사항이며 사용자가 직접 다시 작성하도록 강요해서는 안됩니다. 

 

Minor Release는 신기능이 추가됐을 때 배포합니다.

Minor Release 전 
v1.0.0

Minor Release 후
v1.1.0

 

⭐️ Major Release

주요 Release는 더 이상 이전 버전과 호환되지 않는 중요한 변경 사항을 의미합니다. 기능이 제거되거나 크게 변경될 수 있습니다. 

Major Release 전
v1.0.0

Major Release 후
v2.0.0

 

🧑🏻‍💻 Git Tags 

tag는 Git 기록의 특정 지점을 가리키는 포인터입니다.

 

tag로 특정 순간을 표시할 수 있으며, tag는 프로젝트에서 version release를 표시하는데 가장 자주 사용됩니다. 

 

tag는 생성되면 항상 동일한 commit을 참조합니다. 

 

⭐️  Two Types

tag의 유형에는 두가지가 있습니다. 

 

1. LightWeight tag

2. Annotation tag

 

lightWeight tag는 특정 commit을 가리키는 이름이자 label일 뿐입니다. 

 

annotation tag는 작성자의 이름과 이메일, 날짜, tagging message (예: commit message)를 포함한 추가 메타 데이터를 저장합니다.

 

⭐️  Viewing Tags and Searching 

git tag

 

git tag는 현재 저장소의 모든 태그 목록을 인쇄합니다.

 

tag는 깃 커밋 히스토리에 존재하는 특정 순간, 커밋을 가리키며 일부러 바꾸지 않는 이상 항상 같은 지점을 가리킵니다. 

 

git tag -l "*beta*"  => tag 사이에 beta가 있는 모든 tag를 검색
git tag -l "v17*" => v17로 시작하는 모든 tag를 검색

 

git tag -l을 사용한 다음 와일드카드 패턴을 전달하여 특정 패턴과 일치하는 태그를 검색할 수 있습니다.

예를 들어 git tag -l *beta*는 이름에 "beta"가 포함된 태그 목록을 출력합니다.

 

⭐️  Checking out Tags

특정 태그에서 저장소의 상태를 보려면 git checkout <tag>를 사용할 수 있습니다. 

 

git checkout <tag>

 

⭐️  Git diff 

두 tag사이의 변경사항을 확인할 수 있습니다. 

 

git diff <tag1> <tag2>

 

 

⭐️  Creating LightWeight Tags

LightWeight Tags를 생성하려면 git tag <tagname>을 사용하면 됩니다. 기본적으로 Git은 HEAD가 참조하는 커밋을 참조하는 태그를 생성합니다.

 

git add 
git commit - m
git tag <tagname>

 

⭐️  Annotated Tags 

git tag -a를 사용하여 주석이 달린 새 태그를 만듭니다. 그러면 Git이 기본 텍스트 편집기를 열고 추가 정보를 묻는 메시지를 표시합니다.

 

git commit과 유사하게 -m 옵션을 사용하여 메시지를 직접 전달하고 텍스트 편집기를 열지 않아도 됩니다.

 

주석 태그도 일반 태그처럼 헤드가 현재 가리키는 커밋을 가리킵니다.

 

git tag -a <tagname> -m "message"

 

⭐️  Tag 보기 

git show <tagname>

 

 

⭐️  Force tag 교체하기

tag 값은 고유 값이여야 하기 때문에 재사용할 수 없습니다. 하지만 기존에 지정한 tag 값을 다른 commit으로 옮길 수 있습니다. 

 

git tag <tagname> Hash -f

위의 명령어를 사용하면 기존의 tag를 다른 commit으로 교체할 수 있습니다.

 

 

⭐️  Delete Tags

태그를 삭제하려면  git tag -d <tagname>을 사용하면 됩니다.

 

git tag -d <tagname>

 

⭐️  Pushing Tags

기본적으로  git push 명령은 태그를 원격 서버(GItHub)로 전송하지 않습니다. 한 번에 푸시하고 싶은 태그가 많은 경우 git push 명령에 --tags 옵션을 사용할 수 있습니다. 

 

이렇게 하면 아직 존재하지 않는 원격 서버로 모든 태그가 전송됩니다. 

 

git push --tags

 

 

 

Comments