git을 사용하는 프로젝트가 있고 모든 릴리스에 태그를 지정했습니다.
$ git tag
v1.0.0
v1.0.1
v1.0.2
v1.0.3
v1.1.0
내 목표는 웹 인터페이스에 릴리스 및 릴리스 날짜를 나열하는 것입니다 (태그 / 커밋 날짜 = 릴리스 날짜). 현재 우리는 git tag
.
태그가 만들어진 시간과 날짜 (또는 태그가 가리키는 커밋)를 어떻게 얻을 수 있습니까?
git을 사용하는 프로젝트가 있고 모든 릴리스에 태그를 지정했습니다.
$ git tag
v1.0.0
v1.0.1
v1.0.2
v1.0.3
v1.1.0
내 목표는 웹 인터페이스에 릴리스 및 릴리스 날짜를 나열하는 것입니다 (태그 / 커밋 날짜 = 릴리스 날짜). 현재 우리는 git tag
.
태그가 만들어진 시간과 날짜 (또는 태그가 가리키는 커밋)를 어떻게 얻을 수 있습니까?
답변:
--format
인수 사용 git log
:
git log -1 --format=%ai MY_TAG_NAME
git log -1 --format=%ai v0.2.3
.
--format=%aI
(대문자 "I")
git log -1 --format=%ai MY_TAG_NAME | cat
페이지보기 비활성화
git log
태그와 관련된 하나의 커밋 만 표시하도록 지시 합니다. 기본 동작은 지정된 것부터 복제의 첫 번째 커밋까지의 모든 커밋을 표시하는 것입니다.
이것은 항상 나를 위해 일했습니다.
git log --tags --simplify-by-decoration --pretty="format:%ci %d"
다른 날짜 형식을 원하는 경우 형식 문자열에 대한 자세한 내용은 git-log 맨 페이지의 "PRETTY FORMATS"섹션을 참조하십시오.
taglog = log --tags --simplify-by-decoration --pretty='format:%ci %d'
당신의 .gitconfig 파일의 [별칭] 섹션에 (단일 등급, NOT 따옴표에주의), 그리고 지금 당신은 자식 태그 로그인 명령 :)있어
하나 더 옵션 :
git for-each-ref --format="%(refname:short) | %(creatordate)" "refs/tags/*"
형식 옵션 은 https://git-scm.com/docs/git-for-each-ref#_field_names 참조
%(creatordate)
사용시 태그가 생성 된 날짜를 확인하기 위해 가리키는 커밋 날짜를 제공합니다. %(taggerdate)
쉘을 직접 통합 할 수 있습니다.
$> git for-each-ref --shell --format="ref=%(refname:short) dt=%(taggerdate:format:%s)" "refs/tags/*"
ref='v1.10' dt='1483807817'
ref='v1.11' dt='1483905854'
ref='v1.12.0' dt='1483974797'
ref='v1.12.1' dt='1484015966'
ref='v1.13' dt='1484766542'
ref='v1.2' dt='1483414377'
ref='v1.3' dt='1483415058'
ref='v1.3-release' dt='' <-- not an annotated tag, just a pointer to a commit so no 'taggerdate', it would have a 'creator date'.
ref='v1.3.1' dt='1483487085'
ref='v1.4' dt='1483730146'
ref='v1.9' dt='1483802985'
git for-each-ref --format="%(taggerdate:unix)" refs/tags
git for-each-ref --format="%(taggerdate:raw)" refs/tags
git tag --format "%(refname:short) %(creatordate:short)"
위의 두 솔루션 모두 커밋 날짜를 가져 오며, 이는 해당 커밋이 릴리스 용으로 태그 된시기와 크게 다를 수 있습니다. 태그 자체의 날짜를 얻으려면으로 태그 자체를 찾고로 rev-parse
읽은 cat-file
다음 파싱해야합니다. 약간의 파이프 라인 :
git rev-parse v1.0.0 | xargs git cat-file -p | egrep '^tagger' | cut -f2 -d '>'
"tagger"줄의 날짜를 사람이 읽을 수있는 것으로 변환 하려면 gawk
(아님 awk
)을 사용할 수 있습니다 .
git rev-parse v4.4-rc1 | xargs git cat-file -p | gawk '/^tagger/ { print strftime(PROCINFO["strftime"], $(NF-1)) }'
하나 같이하지 않는 경우 gawk
다음 date
유닉스 시간을 변환 할 수 있습니다 :
git rev-parse v2.76 | xargs git cat-file -p | awk '/^tagger/ { print "@" $(NF-1) }' | xargs date -d
및 예 ( dnsmasq
git repo) :
$ git rev-parse v2.76 | xargs git cat-file -p | awk '/^tagger/ { print "@" $(NF-1) }' | xargs date -d
Wed May 18 16:52:12 CEST 2016
dnsmasq
git repo, 예를 들어 : $ git rev-parse v2.76 | xargs git cat-file -p | awk '/^tagger/ { print strftime(PROCINFO["strftime"], $(NF-1)) }'
Wed May 18 16:52:12 CEST 2016