태그 조회하기
$ git tag
태그는 특정한 커밋을 찾아내기 위한 히스토리 목적으로 사용됨.
검색 패턴을 사용하여 태그를 검색할 수 있다.
Git 소스 저장소는 240여 개의 태그가 있다.
예를들어, 1.4.2 버전의 태그들만 검색하고 싶을땐 아래와 같다.
$ git tag -l 'v1.4.2.*' v1.4.2.1 v1.4.2.2 v1.4.2.3 v1.4.2.4
Git의 태그는 Lightweight 태그와 Annotated 태그로 두 종류가 존재한다.
Lightweight 태그는 브랜치와 비슷한데 브랜치처럼 가리키는 지점을 최신 커밋으로 이동시키지 않는다.
단순히 특정 커밋에 대한 포인터일 뿐이다.
Annotated 태그는 Git 데이터베이스에 태그를 만든 사람의 이름, 이메일과 태그를 만든 날짜, 등을 저장한다.
다른 정보를 저장하지 않는 단순한 태그가 필요하다면 Lightweight 태그를 사용하는 것이 선호한다.
Annotated
tag 명령을 실행할 때 -a 옵션을 추가한다.
$ git tag -a v1.4 -m 'my version 1.4' $ git tag v0.1 v1.3 v1.4
-m 옵션으로 태그를 저장할 때 메시지를 함께 저장할 수 있음.
show 를 사용하여 해당 커밋에서 포함된 수정사항 목록을 텍스트로 확인 할수 있다.
태그가 생성되면 해당 태그가 추가된 커밋을 확인 할 수 있다.
# git show {tag}
Lightweight
Lightweight 태그는 기본적으로 파일에 커밋 체크섬을 저장하는 것뿐 다른 정보는 저장하지 않는다.
Lightweight 태그를 만들 때에는 -a , -s , -m 옵션을 사용하지 않는다
$ git tag v1.4-lw $ git tag v0.1 v1.3
이 태그에 git show 를 실행하면 별도의 태그 정보를 확인할 수 없음.
이 명령은 단순히 커밋 정보만을 보여준다
$ git show v1.4-lw commit 15027957951b64cf874c3557a0f3547bd83b3ff6 Merge: 4a447f7... a6b4c97... ...
나중에 태그하기
예전 커밋에 대해서도 태그할 수 있다.
"updated rakefile" 커밋을 v1.2로 태그하지 못했다고 해도 차후에 태그를 붙일 수 있다.
특정 커밋에 태그하기 위해서 명령의 끝에 커밋 체크섬을 명시
$ git tag -a v1.2 -m 'version 1.2' 9fceb02 $ git tag v0.1 v1.2 v1.3
태그 공유하기
git push 명령은 리모트에 전송하지 않는다.
태그를 생성하면 리모트에 별도로 push 해야 함다.
$ git push origin v1.5
한번에 여러 태그를 push 하고 싶으면 --tags 옵션을 추가하여 push 실행.
다음의 명령으로 리모트에 없는 태그를 모두 전송.
$ git push origin --tags
태그는 오직 특정한 커밋에만 추가되어야 한다.
# git log --oneline # git log {commitNO} --max-depth=1 # git show {commitNO} # git tag {tag} {commitNO} # git tag