주석이 달린 태그와 주석이 없는 태그의 차이점은 무엇입니까?
현재 커밋에 태그를 지정하려면 다음과 같이 하십시오.다음 명령행이 모두 작동하는 것으로 알고 있습니다.
git tag <tagname>
그리고.
git tag -a <tagname> -m '<message>'
이러한 명령의 차이점은 무엇입니까?
TL;DR
명령 간의 차이점은 하나는 태그 메시지를 제공하는 반면 다른 하나는 제공하지 않는다는 것입니다.주석이 달린 태그는 git-show(1)로 표시할 수 있는 메시지가 있는 반면 주석이 없는 태그는 커밋에 대한 명명된 포인터일 뿐입니다.
Lightweight 태그에 대해 자세히 알아보기
설명서에 따르면 "Lightweight 태그를 만들려면 -a, -s 또는 -m 옵션을 제공하지 말고 태그 이름만 제공하십시오."주석이 달린 태그에 메시지를 작성하는 몇 가지 다른 옵션도 있습니다.
- 사용할 때
git tag <tagname>
Git는 현재 리비전에서 태그를 만들지만 주석을 입력하라는 메시지는 표시하지 않습니다.메시지 없이 태그가 지정됩니다(Lightweight 태그임). - 사용할 때
git tag -a <tagname>
-m 플래그를 사용하여 메시지를 제공하지 않은 경우 Git는 주석을 입력하라는 메시지를 표시합니다. - 사용할 때
git tag -a -m <msg> <tagname>
Git는 커밋에 태그를 지정하고 제공된 메시지에 주석을 달 것입니다. - 사용할 때
git tag -m <msg> <tagname>
Git는 주석을 위해 -a 플래그를 전달한 것처럼 동작하고 제공된 메시지를 사용합니다.
기본적으로 태그에 주석 및 기타 정보를 연결할 것인지 여부와 같습니다.
주석이 달린 태그를 밀어넣고 가벼운 로컬 상태로 유지
man git-tag
다음과 같이 말합니다.
주석이 달린 태그는 릴리스용이고 경량 태그는 개인 또는 임시 개체 레이블용입니다.
또한 특정 동작은 이 권장 사항이 유용한 방식으로 구별됩니다. 예를 들어 다음과 같습니다.
주석이 달린 태그에는 해당 태그가 가리키는 커밋과 다른 메시지, 작성자 및 날짜가 포함될 수 있습니다.따라서 릴리스를 커밋하지 않고 릴리스를 설명하는 데 사용할 수 있습니다.
경량 태그에는 추가 정보가 없으며, 사용자가 직접 개발하는 데만 사용하기 때문에 필요하지 않습니다.
- git push --follow-down은 주석이 달린 태그만 푸시합니다.
git describe
명령줄 옵션을 사용하지 않으면 주석이 달린 태그만 표시됩니다.
내부 차이
경량 태그와 주석이 달린 태그 모두 아래의 파일입니다.
.git/refs/tags
SHA-1SHA-1을.경량 태그의 경우 SHA-1은 커밋을 직접 가리킵니다.
git tag light cat .git/refs/tags/light
헤드의 SHA-1과 동일하게 인쇄합니다.
따라서 다른 메타데이터를 포함할 수 없는 것도 당연합니다.
주석이 달린 태그는 개체 데이터베이스의 태그 개체를 가리킵니다.
git tag -as -m msg annot cat .git/refs/tags/annot
주석이 달린 태그 개체의 SHA를 포함합니다.
c1d7720e99f9dd1d1c8aee625fd6ce09b3a81fef
그러면 다음을 통해 컨텐츠를 얻을 수 있습니다.
git cat-file -p c1d7720e99f9dd1d1c8aee625fd6ce09b3a81fef
샘플 출력:
object 4284c41353e51a07e4ed4192ad2e9eaada9c059f type commit tag annot tagger Ciro Santilli <your@mail.com> 1411478848 +0200 msg -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) <YOUR PGP SIGNATURE> -----END PGP SIGNAT
이것이 추가 메타데이터를 포함하는 방법입니다.출력에서 알 수 있듯이 메타데이터 필드는 다음과 같습니다.
- 그것이 가리키는 목적.
- 개체가 가리키는 개체 유형입니다.예, 태그 개체는 커밋뿐만 아니라 블롭과 같은 다른 유형의 개체를 가리킬 수 있습니다.
- 태그의 이름
- 태거 ID 및 타임스탬프
- 메세지.PGP 서명이 메시지에 어떻게 추가되는지 확인합니다.
Git 태그 개체의 형식과 SHA를 계산하는 방법은 다음과 같습니다.
보너스
태그에 주석이 달렸는지 확인합니다.
git cat-file -t tag
출력
commit
경우 객체가 을 직접 .tag
달린 에, 이 에는 태그 개체가 있습니다.
Lightweight 태그만 나열:모든 경량 태그를 나열하려면 어떻게 해야 합니까?
큰 차이는 여기서 완벽하게 설명됩니다.
기본적으로 경량 태그는 특정 커밋에 대한 포인터일 뿐입니다.더 이상의 정보는 저장되지 않지만 주석이 달린 태그는 작성자와 날짜가 있는 일반 개체이며 자체 SHA 키가 있기 때문에 참조할 수 있습니다.
태그를 지정한 사용자와 시기를 알고 있다면 주석이 달린 태그를 사용합니다.개발의 특정 지점에 태그를 지정하려면 누가 언제 태그를 지정하든 상관없이 경량 태그만 있으면 됩니다.
일반적으로 주석이 달린 태그를 선택할 수 있지만, 이는 프로젝트의 Git 마스터에 달려 있습니다.
언급URL : https://stackoverflow.com/questions/11514075/what-is-the-difference-between-an-annotated-and-unannotated-tag
'programing' 카테고리의 다른 글
C#을 사용하여 Gmail SMTP 서버를 통해 전자 메일 보내기 (0) | 2023.05.06 |
---|---|
Excel 셀 값을 기준으로 범위 정의 (0) | 2023.05.06 |
bash에서 "cat << EOF"는 어떻게 작동합니까? (0) | 2023.05.06 |
목록 항목을 인쇄하는 부정적인 방법 (0) | 2023.05.06 |
Mac OSX에서 Postgres DB가 시작되지 않음: 오류 메시지: Unix 도메인 소켓의 연결 (0) | 2023.05.06 |