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 --tags --simplify-by-decoration --pretty="format:%ci %d"
다른 날짜 형식을 원하는 경우 형식 문자열에 대한 자세한 내용은 git-log 맨 페이지의 “PRETTY FORMATS”섹션을 참조하십시오.
답변
하나 더 옵션 :
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'
답변
위의 두 솔루션 모두 커밋 날짜를 가져 오며, 이는 해당 커밋이 릴리스 용으로 태그 된시기와 크게 다를 수 있습니다. 태그 자체의 날짜를 얻으려면으로 태그 자체를 찾고로 rev-parse
읽은 cat-file
다음 파싱해야합니다. 약간의 파이프 라인 :
git rev-parse v1.0.0 | xargs git cat-file -p | egrep '^tagger' | cut -f2 -d '>'
답변
git tag 명령에는이 작업을 수행하는 간단한 옵션이 없습니다. 나는 달리기가 가장 편리하다는 것을 알았다
git log --decorate=full
태그가있는 경우 모든 커밋을 나열합니다. 태그가 지정된 커밋 만 나열하려면
git log --decorate=full --simplify-by-decoration
자세한 사용
git help log
답변
“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