git を使用しているプロジェクトがあり、すべてのリリースにタグを付けました。
$ git tag
v1.0.0
v1.0.1
v1.0.2
v1.0.3
v1.1.0
私の目標は、Web インターフェースにリリースとリリース日をリストすることです (タグ/コミット日 = リリース日)。現在、 を使用してすべてのリリースを一覧表示していますgit tag
。
タグが作成された日時 (またはタグが指すコミット) を取得するにはどうすればよいですか?
これは常に私のために働いた:
git log --tags --simplify-by-decoration --pretty="format:%ci %d"
別の日付フォーマットが必要な場合は、フォーマット文字列の詳細について、git-log マンページの「PRETTY FORMATS」セクションを参照してください。
--format
次の引数を使用しgit log
ます。
git log -1 --format=%ai MY_TAG_NAME
もう 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'
上記の両方のソリューションでコミット日が取得されることに注意してください。これは、そのコミットがリリース用にタグ付けされた日付とは大きく異なる可能性があります。タグ自体の日付を取得するには、 でタグ自体を検索し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