개발관련/Git

git 태그 란 무엇이며 태그를 만드는 방법 및 git 원격 태그를 확인하는 방법

Rateye 2022. 3. 26. 16:42
728x90
반응형
질문 : git 태그 란 무엇이며 태그를 만드는 방법 및 git 원격 태그를 확인하는 방법

원격 git 태그를 체크 아웃 할 때 다음과 같은 명령을 사용하십시오.

git checkout -b local_branch_name origin/remote_tag_name

다음과 같은 오류가 발생했습니다.

error: pathspec `origin/remote_tag_name` did not match any file(s) known to git.

git tag 명령을 사용하면 remote_tag_name을 찾을 수 있습니다.

답변

여기에 이미지 설명 입력

태그는 히스토리에서 특정 커밋 에 레이블을 지정하고 표시하는 데 사용됩니다.
일반적으로 릴리스 지점을 표시하는 데 사용됩니다 (예 : v1.0 등).

태그가 분기와 비슷하게 보일 수 있지만 태그는 변경되지 않습니다 . 기록의 특정 커밋 을 직접 가리키며 명시 적으로 업데이트하지 않는 한 변경되지 않습니다.

여기에 이미지 설명 입력

태그가 리포지토리에 로컬이 아니면 체크 아웃 할 수 없으므로 먼저 태그를 로컬 리포지토리 fetch

먼저 다음을 수행하여 태그가 로컬에 있는지 확인합니다.

# --all will fetch all the remotes.
# --tags will fetch all tags as well
$ git fetch --all --tags --prune

그런 다음 실행하여 태그를 확인하십시오.

$ git checkout tags/<tag_name> -b <branch_name>

origin 대신 tags/ 접두사를 사용하십시오.

이 샘플에는 두 개의 태그 버전 1.0 및 버전 1.1이 있으며 다음 중 하나로 확인할 수 있습니다.

$ git checkout A  ...
$ git checkout version 1.0  ...
$ git checkout tags/version 1.0  ...

태그는 주어진 커밋에 대한 포인터 일 뿐이므로 위의 모든 작업은 동일하게 수행됩니다.

여기에 이미지 설명 입력
출처 :https://backlog.com/git-tutorial/img/post/stepup/capture_stepup4_1_1.png

# list all tags
$ git tag

# list all tags with given pattern ex: v-
$ git tag --list 'v-*'

태그를 만드는 방법에는 두 가지가 있습니다.

# lightweight tag 
$ git tag 

# annotated tag
$ git tag -a

두 가지의 차이점은 주석이 달린 태그를 만들 때 git 커밋에서와 같이 메타 데이터를 추가 할 수 있다는 것입니다.
이름, 이메일, 날짜, 코멘트 및 서명

여기에 이미지 설명 입력

$ git tag -d <tag_name>
Deleted tag <tag_name> (was 000000)

참고 : 존재하지 않는 Git 태그를 삭제하려고하면 다음 오류가 표시됩니다.

$ git tag -d <tag_name>
error: tag '<tag_name>' not found.
# Delete a tag from the server with push tags
$ git push --delete origin <tag name>

주어진 태그의 내용을 가져 오기 위해 checkout 명령을 사용할 수 있습니다. 위에서 설명한대로 태그는 다른 커밋과 유사하므로 checkout 을 사용할 수 있으며 SHA-1을 사용하는 대신 tag_name으로 간단히 대체 할 수 있습니다.

옵션 1:

# Update the local git repo with the latest tags from all remotes
$ git fetch --all

# checkout the specific tag
$ git checkout tags/<tag> -b <branch>

옵션 2 :

git은 --branch 를 추가하여 얕은 복제 를 지원하므로 분기 이름 대신 태그 이름을 사용할 수 있습니다. Git은 주어진 SHA-1을 관련 커밋으로 "변환"하는 방법을 알고 있습니다.

# Clone a specific tag name using git clone 
$ git clone <url> --branch=<tag_name>

git clone --branch = --branch 는 태그를 가져와 결과 저장소의 해당 커밋에서 HEAD를 분리 할 수도 있습니다.

모든 태그를 푸시하려면 :

# Push all tags
$ git push --tags 

 

이유 :

  • 때때로 태그가 브랜치와 동일한 이름을 가질 수 있고 간단한 git 푸시가 태그 대신 브랜치를 푸시하므로 refs/tags 를 사용하는 것이 좋습니다.

주석이 달린 태그와 현재 히스토리 체인 태그를 푸시하려면 다음을 사용하십시오.

이 플래그는 --follow-tags 커밋하고 모두 태그 만 모두 밀어 :

  • 주석이 달린 태그 (로컬 / 임시 빌드 태그를 건너 뛸 수 있음)
  • 현재 분기 (기록에 있음)에서 도달 할 수있는 태그 (상위)

여기에 이미지 설명 입력

Git 2.4에서 구성을 사용하여 설정할 수 있습니다.

$ git config --global push.followTags true

컨닝 지: 여기에 이미지 설명 입력

출처 : https://stackoverflow.com/questions/35979642/what-is-git-tag-how-to-create-tags-how-to-checkout-git-remote-tags
728x90
반응형