카테고리 보관물: Git

Git

git 태그의 시간과 날짜 가져 오기 릴리스에 태그를 지정했습니다. $

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

및 예 ( dnsmasqgit 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

답변