git-ls-remote를 나열 할 때 태그 이름 뒤에 "^ {}"가있는 이유는 무엇입니까?
이 질문에 이미 답변이 있습니다.
git ls-remote
작업 트리에서 실행 하면 명령이 원본 저장소의 개정 목록을 출력합니다. 어떤 이유로 나는 모든 태그에 대해 2 개의 개정을 얻었으며 동일한 태그의 두 번째 개정에 대해 태그 이름에 다음이 포함됩니다.^{}
git ls-remote
From git@github.com:andris9/zzzzzz.git
d69e66d7c915b9682618b7f304b80cc0ae4c7809 HEAD
....
bb944682f7f65272137de74ed18605e49257356c refs/tags/v0.1.6
771a930dc0ba86769d6862bc4dc100acc50170fa refs/tags/v0.1.6^{}
a72251d945353a360087eb78ee75287c38a1c0e6 refs/tags/v0.1.7
d69e66d7c915b9682618b7f304b80cc0ae4c7809 refs/tags/v0.1.7^{}
나는 태그를 만든다.
git tag -a v0.1.8 -m "tag message"
git push --tags
git-ls-remote
매뉴얼 페이지 의 예에서 그러한 중복 태그가 없으므로 내가 뭔가 잘못하고 있습니까?
이 태그의 2 종류가 있습니다 - lightweight
와 annotated
. 경량 태그는 일부 객체를 가리키는 참조 일 뿐이며 주석이 달린 태그는 자체적으로 별도의 git 객체이며 작성자, 커미터, 커밋 메시지 등과 같은 더 많은 정보를 저장합니다.
git tag -a
태그를 만들 때 git은 주석이 달린 태그를 만들었습니다.
는 ^{}
태그를 참조 해제하는데 사용되는 구문이다. 그것은 gitrevisions에 설명되어 있습니다 .
태그 객체와 함께 사용하면 git은 태그가 아닌 객체를 찾을 때까지 태그를 재귀 적으로 역 참조합니다.
태그가없는 객체와 함께 사용하면 아무 작업도 수행하지 않으며
^{}
refs/tags/v0.1.6
리포지토리 의 ref는 태그 객체를 가리키며, 태그를 만들 때 커밋 정보를 저장하고 있다고 생각하는 (태그가 아닌 객체)를 bb944682f7f65272137de74ed18605e49257356c
차례로 가리 킵니다 771a930dc0ba86769d6862bc4dc100acc50170fa
.
그래서 당신이 할 때 refs/tags/v0.1.6^{}
, git은 태그를 역 참조하고 태그 771a930dc0ba86769d6862bc4dc100acc50170fa
가 아닌 객체로 해결할 것 입니다.
git show-ref
태그 만 나열하고 선택적으로 다음과 같이 역 참조하는 데 사용할 수 있는 명령 도 있으며 , 귀하의 경우 다음 출력을 생성해야합니다.
$ git show-ref --tags
bb944682f7f65272137de74ed18605e49257356c refs/tags/v0.1.6
a72251d945353a360087eb78ee75287c38a1c0e6 refs/tags/v0.1.7
$ git show-ref --tags --dereference
bb944682f7f65272137de74ed18605e49257356c refs/tags/v0.1.6
771a930dc0ba86769d6862bc4dc100acc50170fa refs/tags/v0.1.6^{}
a72251d945353a360087eb78ee75287c38a1c0e6 refs/tags/v0.1.7
d69e66d7c915b9682618b7f304b80cc0ae4c7809 refs/tags/v0.1.7^{}
이를 확인하기 위해 git show
command를 사용 하여 git 객체에 대한 자세한 정보를 제공 할 수 있습니다 .
이것은 내 테스트 git 저장소 중 하나의 정보입니다.
$ git show 43f9a98886ba873c0468c608f24c408b9991414f
tag v0.1
Tagger: Ash <tuxdude@OptimusPrime>
Date: Sun Jul 15 00:14:43 2012 -0700
Tagging Stable repo 0.1 :)
-----BEGIN PGP SIGNATURE-----
<PGP-SIGNATURE>
-----END PGP SIGNATURE-----
commit e55df25f2321a6b2c9a02fa80ccba7cbe3c38c08
Merge: 796efcd 58e3a4d
Author: Ash <tuxdude@OptimusPrime>
Date: Sun Jul 15 00:02:44 2012 -0700
Merge branch 'dev' into 'master' for stable 0.1.
$ git show e55df25f2321a6b2c9a02fa80ccba7cbe3c38c08
commit e55df25f2321a6b2c9a02fa80ccba7cbe3c38c08
Merge: 796efcd 58e3a4d
Author: Ash <tuxdude@OptimusPrime>
Date: Sun Jul 15 00:02:44 2012 -0700
Merge branch 'dev' into 'master' for stable 0.1.
'Programing' 카테고리의 다른 글
MOQ-다른 인터페이스로 캐스팅해야하는 인터페이스를 모의하는 방법은 무엇입니까? (0) | 2020.11.15 |
---|---|
jQuery : 이벤트 핸들러 함수에서 이벤트 객체를 인수로 전달하지 않고 가져 오는 방법은 무엇입니까? (0) | 2020.11.15 |
`find -perm`을 사용하여 권한이 설정되지 않은 경우 찾기 (0) | 2020.11.15 |
.gitmodules에서 git 하위 모듈 복원 (0) | 2020.11.15 |
Java 오류 : 비교 방법이 일반 계약을 위반 함 (0) | 2020.11.14 |