이번시간에는 tag
에 대해 알아보겠습니다. 이는 branch
와 조금 비슷하지만 살짝 다릅니다.
저기 들어가보면 Release
라는 문구가 있습니다.
이는 git
이 만들고 있는 소스코드에서 사용자들에게 제공할 수 있는 각각의 의미있는 버전들을 모아놓은 곳입니다. 즉 정식으로 오픈된 버전을 다운로드하는 기능입니다.
875 tags
라는 숫자를 보면 다양한 버전이 있습니디. v2.39.0
이라는 commit
은 c48035d
이라는 id
를 가지고 있습니다.
중요한 것은 이 commit
들은 고정되어있어야합니다.
하지만 branch
에서 master
라는 최신 commit
은 고정되어서는 안됩니다. 변화를 하면서 새로운 버전을 만들기 때문이죠.
즉 branch
는 tag
처럼 commit id
를 같이 가르키지만
tag
는 언제나 똑같은 commit id
를 가르키고 branch
는 commit id
가 항상 변화합니다.
git init tag
를 통해 새로운 저장소를 만들어 줍니다. 이후 f1.txt
를 만들고 add
와 commit
까지 해주겠습니다.
한번더 수정해서 commit
를 해보겠습니다.
다른사람들이 특정한 commit
을 언제든지 다운로드 할 수 있도록 git tag 1.0.0 master
를 해보겠습니다. master
를 하면 가장 최근 commit
을 가르킵니다. 또는 commit id
를 통해 특정 commit
를 tag
로 만들 수 있습니다.
git tag
를 통해 확인 가능하고 git log --decorate
사용시 tag
가 가르키는 commit
을 확인 할 수 있습니다.
다시 한번더 f1.txt
를 수정하고 commit
를 하겠습니다.
즉 우리가 만들었던 태그는 여전히 같은 commit id
를 가르키고 있습니다. 하지만 branch
는 commit
을 함으로써 가리키는 commit id
가 변했습니다.
git checkout 1.0.0
을 통해서 tag
를 이용하여 checkout
도 가능합니다.
현재까지는 light weight tag
를 사용했습니다. 즉 tag
에 따로 커밋메세지를 사용하지 않았습니다. tag
에도 어떤것이 변화하였는지 메세지를 달 수 있습니다.
이것을 annotated tag
, 즉 '주석을 단다' 라는 의미를 가집니다.
-a
옵션은 아까 설명한 annotated
의 약자이고 1.1.0
은 버전 이름 , -m
은 메세지를 사용하겠다는 의미입니다.
tag
에 대한 상세 정보는 -v
옵션을 통해 확인 가능합니다.
bug fix
라는 내용이 들어간 것을 확인 할 수 있습니다.
이제 이 tag
버전을 원격저장소에 업로드 해봅시다. github
로 가서 tag
라는 repository
를 만들어 주겠습니다.
git remote add origin https주소
를 사용해주고
git push --set-upstream origin master
를 통해서 업로드 해줍니다. 하지만 이렇게 해서는 tag
가 업로드 되지 않습니다.
tag
를 github
에 업로드 하기 위해서는 git push --tags
라는 옵션까지 사용해야합니다.
이후 github
의 repository
에 들어가보면 tag
가 있는것을 확인할 수 있습니다. 들어가봅시다.
정상적으로 태그가 추가됬습니다. 또한 태그의 이름은 꼭 1.0.0
같은 이름말고 다른것도 사용가능합니다.
만약 github
에서 tag
에 대한 더 자세한 내용을 담고 싶으면 우측 상단의 Create release from tag
를 클릭해줍니다.
Release title
를 통해서 제목을 넣을 수 있고 내용도 넣을 수 있습니다. Publish release
를 눌러봅시다.
그러면 Latest
라는 문구가 뜨고 우측에 Compare
기능도 존재합니다.
그 바로옆에 연필모양을 클릭하면 Edit
에 들어가집니다.
semantic versioning 라는 부분이 있는데 들어가봅시다.
이 사이트에 들어가면 '어떻게 버전 번호를 작성하는가?' 에 대해서 자세하게 나타나 있습니다. 영어와 한국어도 지원하고 다른나라의 언어도 많이 지원합니다.
그리고 tag
도 삭제가 가능합니다. 일단 새로운 버전을 만들어 주고
git tag -d 1.1.1
를 통해서 삭제 할 수 있습니다.
지금까지 tag
를 사용하는 법 , 그리고 light weight tag
, annotated tag
에 대해 알아봤고 삭제하는 법까지 알아봤습니다.
여기까지 하도록 하겠습니다.