programing

주석이 달린 태그와 주석이 없는 태그의 차이점은 무엇입니까?

linuxpc 2023. 5. 6. 14:07
반응형

주석이 달린 태그와 주석이 없는 태그의 차이점은 무엇입니까?

현재 커밋에 태그를 지정하려면 다음과 같이 하십시오.다음 명령행이 모두 작동하는 것으로 알고 있습니다.

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/tagsSHA-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
    

    이것이 추가 메타데이터를 포함하는 방법입니다.출력에서 알 수 있듯이 메타데이터 필드는 다음과 같습니다.

    Git 태그 개체의 형식과 SHA를 계산하는 방법은 다음과 같습니다.

보너스

차이는 여기서 완벽하게 설명됩니다.

기본적으로 경량 태그는 특정 커밋에 대한 포인터일 뿐입니다. 이상의 정보저장되지 않지만 주석이 달린 태그는 작성자와 날짜가 있는 일반 개체이며 자체 SHA 키가 있기 때문에 참조할 수 있습니다.

태그를 지정한 사용자와 시기알고 있다면 주석이 달린 태그를 사용합니다.개발의 특정 지점에 태그를 지정하려면 누가 언제 태그를 지정하든 상관없이 경량 태그만 있으면 됩니다.

일반적으로 주석이 달린 태그를 선택할 수 있지만, 이는 프로젝트의 Git 마스터에 달려 있습니다.

언급URL : https://stackoverflow.com/questions/11514075/what-is-the-difference-between-an-annotated-and-unannotated-tag

반응형