Git Tag : 태그 설정

Sangyeon·2022년 7월 30일
0

Git

목록 보기
11/12
post-thumbnail

주로 프로젝트 릴리즈를 표시하기 위해 사용되는 git tag 에 대한 포스팅 입니다.

전체 태그 조회

$ git tag

아래는 Pairwise Testing 시 사용하는 툴 중 하나인 pict의 repository를 clone 하여 git tag 명령어를 실행한 결과입니다.

특정 태그 조회

-l 옵션을 사용하여 특정 태그명이 포함된 태그를 조회할 수 있습니다.

$ git tag -l “<태그명>

아래는 pict repository의 3.7 버전을 조회하는 예시입니다.
와일드카드(*) 패턴을 사용하여 조건에 맞는 태그를 조회할 수 있습니다.

$ git tag -l “v3.7*”

전체 태그 조회했을 시 총 5개의 태그 중 release 태그 외에는 모두 3.7 버전의 태그라 4개의 태그가 조회됨을 확인할 수 있습니다.

특정 태그 시점으로 체크아웃

$ git checkout <태그명>

$ git checkout <commit-hash>와 동일하게 입력한 태그명의 커밋 시점으로 체크아웃되어 HEAD가 특정 커밋을 직접 참조하는 detached HEAD 상태가 됩니다.

특정 태그 시점 커밋 정보 출력

$ git show <태그명>

$ git show <commit-hash>와 동일하게 입력한 태그 시점의 커밋 정보를 출력합니다.

pict repository에서 v3.7.4 태그의 커밋 정보를 출력해보았습니다.

$ git show v3.7.4

$ git log --oneline 명령어로 커밋 히스토리 조회 시,

v3.7.4 태그 시점의 커밋해시값은 d529bb1으로, 아래 명령어 실행 시 $ git show v3.7.4 명령어와 동일한 결과가 노출되는 것을 확인할 수 있습니다.

$ git show d529bb1

두 태그 사이 diff 출력

태그명1과 태그명2의 diff를 출력합니다.

$ git diff <태그명1> <태그명2>

pict repository가 v3.7.3 -> v.3.7.4 로 업데이트되면서 어떤 변경사항이 발생하였는지 출력해보았습니다.

$ git diff v3.7.4 v3.7.3

여러 변경사항이 있는데, dllmain.cpp 파일 변경사항만 캡쳐해보았습니다.
코드 중 어떤 라인이 제거되었으며, 어떤 라인이 추가되었는지 아래와 같이 -, + 기호 및 색상으로 구분되어 확인할 수 있었습니다.

태그 생성

Git 태그는 총 두 가지 종류로, 일반적으로 이름 정보만을 갖는 일반 태그(Lightweight Tag) 와 상세한 정보를 포함하는 주석 태그(Annotated Tag) 가 있습니다.

일반 태그(Lightweight Tag) 생성

일반 태그는 별도 추가 정보 기입 없이 아래 명령어 실행으로 태그가 생성됩니다.

$ git tag <태그명>

주석 태그(Annotated Tag) 생성

주석 태그의 경우, 아래 명령어 실행 시 $ git commit 명령어를 실행한 것과 동일하게 에디터가 실행되어 추가 정보를 기입할 수 있습니다.

$ git tag -a <태그명>

$ git commit -m "커밋메시지" 명령어와 동일하게 -m 옵션을 추가하면 에디터 실행없이 간단한 메시지를 작성할 수도 있습니다.

이전 커밋에 태그 생성

아래와 같이 커밋해시값 - 태그 맵핑 시킴으로써 이전 커밋에 태그를 생성할 수 있습니다.

$ git tag <태그명> <commit-hash>

태그 강제 수정

태그명은 고유값으로, 재사용될 수 없습니다.
만약 실수로 태그를 잘못 생성한 경우에는 아래 명령어로 커밋해시값 - 태그를 재맵핑 할 수 있습니다.

$ git tag -f <태그명> <commit-hash>

태그 삭제

$ git tag -d <태그명>

태그 푸시

$ git push 명령어는 커밋 내역만 원격 저장소로 push 되기 때문에, 태그는 별도로 push 해야 합니다.

커밋과 태그 동시에 푸시

만약 커밋과 태그 동시에 push 하고 싶다면, --follow-tags 옵션을 사용할 수 있습니다.

$ git push --follow-tags

전체 태그 푸시

$ git push —-tags
$ git push <remote> —-tags

특정 태그 푸시

$ git push <remote> <태그명>

Reference

https://git-scm.com/docs/git-tag

profile
I'm a constant learner.

0개의 댓글