Git:Tag
프로젝트 진행 상의 중요한 지점에 태그를 붙일 수 있습니다. 일반적으로 이 기능은 버전 1.0과 같이 S/W 릴리즈 지점을 지정하기 위해 사용 합니다.
태그의 종류
Git의 태그는 Lightweight 태그와 Annotated 태그로 두 종류가 있다.
- Lightweight 태그는 브랜치와 비슷한데 브랜치처럼 가리키는 지점을 최신 커밋으로 이동시키지 않는다. 단순히 특정 커밋에 대한 포인터일 뿐이다.
그냥 다른 정보를 저장하지 않는 단순한 태그가 필요하다면 Lightweight 태그를 사용하는 것이 좋다. - Annotated 태그는 Git 데이터베이스에 태그를 만든 사람의 이름, 이메일과 태그를 만든 날짜, 그리고 태그 메시지도 저장한다. 또 GPG(GNU Privacy Guard)로 서명할 수도 있다.
이 모든 정보를 저장해둬야 할 때에만 Annotated 태그를 추천한다.
Annotated
Annotated 태그를 만드는 방법은 간단하다. tag 명령을 실행할 때 -a
옵션을 추가한다:
Lightweight
Lightweight 태그는 기본적으로 파일에 커밋 체크섬을 저장하는 것뿐이다. 다른 정보는 저장하지 않는다. Lightweight 태그를 만들 때에는 -a
, -s
, -m
옵션을 사용하지 않는다:
태그의 공유
-
git push [원격저장소명] [태그명]
-
git push [원격저장소명] [로컬브랜치명] --tags
기본적으로 git push 명령은 태그를 원격 저장소에 보내지 않습니다. 태그를 만들면 태그를 원격 서버에 푸쉬 하라고 명시할 필요가 있습니다. 그 방법은 원격 브랜치를 공유할 때와 비슷 합니다. 다음과 같이 git push origin [tagname]
명령을 실행 합니다.
푸쉬를 할때 git push origin master
에서 orgin master가 기본값이므로 생략해서 git push
하듯이 origin 원격저장소에 master 브랜치에 대한 모든 태그를 푸쉬하려면 git push --tags
를 사용해서 모든 태그를 푸쉬할 수 있습니다.