web-dev-qa-db-ja.com

gitタグの名前、日付、メッセージを一覧表示する

すべてのタグのタグ名、タグ日付、タグメッセージを一覧表示するにはどうすればよいですか?

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つすべての情報を取得するには、私の能力を超えた粗末なスクリプトが必要なようです。

29
kayaker243

for-each-refコマンドを使用したい。残念ながら、それはfilter-branchよりもユーザーフレンドリーではありません。

タグの日付やタガーなどの情報は、注釈付きのタグでのみ使用できることに注意してください。

以下は基本的なプロトタイプです。 format =は独自のシェルスクリプト全体にすることもでき、出力をどの程度複雑にするかによって異なる場合があります。彼らは特にタグのためのいくつかの例を持っています for-each-refドキュメンテーション

git for-each-ref --format="%(refname:short) %(taggerdate) %(subject) %(body)" refs/tags
26
Andrew C

git show --tagsは、少なくともタグに関するすべての関連情報を出力します。そこから適切な--pretty=format:シーケンスを見つけることができる場合があります。

5
Christopher

もう少し良いカラフルなフォーマットはどうですか?

# ~/.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.
1
sepehr

する方法があるかどうかわかりません

リスト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を簡単に調整して、他の状況をカバーできます(ある場合)。

1

最新のタグの詳細を取得する場合は、_--sort_フラグを使用します。日付で並べ替える場合は、日付の前に「-」を使用して最新のものを最初にリストしてください。

たとえば、最新のタグの説明(たまたま最新のリリース名)が必要だったので、-formatを使用してタグの件名を取得し、タグを日付順(最新が最初)に並べ替えました。これがそのコマンドです。

git for-each-ref --sort=-taggerdate --format '%(subject)' refs/tags --count=1

0
Omisha gupta