질문 : 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
'개발관련 > Git' 카테고리의 다른 글
Git 커밋에서 파일을 제거 하는 방법 (0) | 2022.03.26 |
---|---|
git branch, fork, fetch, merge, rebase 및 clone의 차이점 (0) | 2022.03.26 |
Git 기록에서 커밋 된 코드를 grep (검색)하는 방법 (1) | 2022.02.01 |
git에서 별칭 명령을 수행하는 방법 (0) | 2022.02.01 |
Git에서 태그가 가리키는 커밋을 확인하는 방법 (0) | 2022.01.17 |