すべてのタグのタグ名、タグ日付、タグメッセージを一覧表示するにはどうすればよいですか?
Gitがgit log
を介したコミットとgit tag
を介したタグの表示ロジックを分離すると、タグ名、タグの日付、タグメッセージを一覧表示することが難しくなるようです。
git log --tags --show-notes --simplify-by-decoration --pretty="format:%ai %d %s"
を使用して、タグの日付、名前、コミットメッセージを表示できます
私は http://opensource.Apple.com/source/Git/Git-26/src/git-htmldocs/pretty-formats.txt を調べましたが、タグメッセージを表示するオプションが表示されませんでした。
git tag -n5
を使用して、タグ名と5行のタグメッセージを表示できます。
しかし、3つすべての情報を取得するには、私の能力を超えた粗末なスクリプトが必要なようです。
for-each-ref
コマンドを使用したい。残念ながら、それはfilter-branch
よりもユーザーフレンドリーではありません。
タグの日付やタガーなどの情報は、注釈付きのタグでのみ使用できることに注意してください。
以下は基本的なプロトタイプです。 format =は独自のシェルスクリプト全体にすることもでき、出力をどの程度複雑にするかによって異なる場合があります。彼らは特にタグのためのいくつかの例を持っています for-each-refドキュメンテーション
git for-each-ref --format="%(refname:short) %(taggerdate) %(subject) %(body)" refs/tags
git show --tags
は、少なくともタグに関するすべての関連情報を出力します。そこから適切な--pretty=format:
シーケンスを見つけることができる場合があります。
もう少し良いカラフルなフォーマットはどうですか?
# ~/.gitconfig
[alias]
tags="for-each-ref --sort=taggerdate --format=%(color:green)%(subject)%(color:reset), tagged: %(refname:short)\n%(taggerdate)\n%(taggername) %(taggeremail)\n\n%(contents:body)\n' refs/tags"
$ git tags
Release 1.0.1, tagged: 1.0.1
Wed Jul 4 20:16:05 2018 +0430
Sepehr Lajevardi <sepehr.lajevardi@...>
Changelog
- Implement Contentful webhooks to purge internal and CF caches.
- Implement CloudFlareService.
- Fix Contentful's mapping concern usage/namespace. #73
- Temporarily enforce https in og:url property. #103
- Fix entry callback issue with Contentful client. #99
- Fix issue with PPM docker build. #96
Release 1.1.2, tagged: 1.1.2
Thu Jul 12 21:26:29 2018 +0430
Sepehr Lajevardi <sepehr.lajevardi@...>
Changelog
- Fix GA share event issue with AddThis. #132
- Optimize OpenGraph protocol tags for articles. #130
- Optimize Twitter card tags. #131
- Fix HTML validation errors as much as possible. #127
Release 1.1.3, tagged: 1.1.3
Mon Jul 16 22:49:05 2018 +0430
Sepehr Lajevardi <sepehr.lajevardi@...>
Changelog
- Implement cross-device/browser fav/home icons. #137, #138
- Minify HTML output of all pages. #139
- Check for lighthouse score in build pipeline. #30
- Drop AddThis in favor of in-house ShareBar. #116
- Minor article OG tag adjustments.
する方法があるかどうかわかりません
リストonlyすべてのタグのタグ名、タグ日付、タグメッセージgit構文のみを使用。
しかし、単純なgrepで十分です。
git show --tags |grep "^tag " -A4
標準出力ではタグ名、タグ日付、タグメッセージがそれぞれ別の行に表示されるため、照合後に4行の末尾コンテキストを指定していることに注意してください。
複数行のタグメッセージを処理する必要がある場合は、awkへのパイプを使用する方が少し面倒です。
git show --tags |awk "/^tag /,/-----BEGIN PGP SIGNATURE-----|commit /" |egrep -v "^$" |sed -E "s/^-----BEGIN PGP SIGNATURE-----.*|^commit.*/-/"
これは、タグメッセージの後にPGP SIGNATUREまたはコミットメッセージが続く限り機能します。ただし、最後のgrepを簡単に調整して、他の状況をカバーできます(ある場合)。
最新のタグの詳細を取得する場合は、_--sort
_フラグを使用します。日付で並べ替える場合は、日付の前に「-」を使用して最新のものを最初にリストしてください。
たとえば、最新のタグの説明(たまたま最新のリリース名)が必要だったので、-formatを使用してタグの件名を取得し、タグを日付順(最新が最初)に並べ替えました。これがそのコマンドです。
git for-each-ref --sort=-taggerdate --format '%(subject)' refs/tags --count=1