브랜치는 특정한 커밋 버전을 가리키는 대신 항상 바뀌고, 태그는 항상 같은 것을 가리킨다.
현재 버전의 상태를 사용자들에게 다운로드 할 수 있게 하고 싶은데, 시간이 지나면 마스터 브랜치가 가리키는 커밋이 바뀌니, 나중에라도 알 수있게 태그를 쓴다.
git tag 1.0.0 master
현재 마스터 브랜치에 1.0.0이라는 태그를 붙이는 것이다.
git tag -a 1.1.0 -m "bug fix"
a 옵션은 annotated의 약자로 light 태그와 대비된다. 태그를 누가 만들었는지, 태그에 대한 설명 등이 담긴다.
git push --tags
를 해야 태그까지 같이 푸시가 된다. 깃헙에서 release에 가면 태그들을 볼 수 있다.
태그를 만들면 .git안에 regs/tags/버전 파일이 생긴다. 이 파일이 해당 커밋을 가리키고 있다.