gitを使用しているプロジェクトがあり、すべてのリリースにタグを付けています。
$ git tag
v1.0.0
v1.0.1
v1.0.2
v1.0.3
v1.1.0
私の目標は、リリースとリリース日をWebインターフェイスに一覧表示することです(タグ/コミット日=リリース日)。現在、を使用してすべてのリリースを一覧表示していますgit tag
。
タグが作成された日時(またはタグが指すコミット)を取得するにはどうすればよいですか?
gitを使用しているプロジェクトがあり、すべてのリリースにタグを付けています。
$ git tag
v1.0.0
v1.0.1
v1.0.2
v1.0.3
v1.1.0
私の目標は、リリースとリリース日をWebインターフェイスに一覧表示することです(タグ/コミット日=リリース日)。現在、を使用してすべてのリリースを一覧表示しています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
タグに関連するコミットを1つだけ表示するように指示します。デフォルトの動作では、指定されたコミットからリポジトリ内の最初のコミットまでのすべてのコミットが表示されます。
これはいつも私のために働いた:
git log --tags --simplify-by-decoration --pretty="format:%ci %d"
別の日付フォーマットが必要な場合は、フォーマット文字列の詳細について、git-logマンページの「PRETTYFORMATS」セクションを参照してください。
taglog = log --tags --simplify-by-decoration --pretty='format:%ci %d'
.gitconfigファイルの[alias]セクションに(二重引用符ではなく一重引用符で)入力するだけで、git taglogコマンドが得られます:)
もう1つのオプション:
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 '>'
gawk
(ではなくawk
)を使用して、「タガー」行の日付を人間が読める形式に変換できます。
git rev-parse v4.4-rc1 | xargs git cat-file -p | gawk '/^tagger/ { print strftime(PROCINFO["strftime"], $(NF-1)) }'
1が気に入らない場合はgawk
、その後date
のUNIX時間を変換するために使用することができます。
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