システム内のすべてのタグを作成日までにリストする方法が必要ですが、そのデータをgit-logから取得できるかどうかはわかりません。アイデア?
システム内のすべてのタグを作成日までにリストする方法が必要ですが、そのデータをgit-logから取得できるかどうかはわかりません。アイデア?
回答:
タグの作成日によるソートは、注釈付きの軽量タグで機能します。
git for-each-ref --sort=creatordate --format '%(refname) %(creatordate)' refs/tags
git for-each-ref --format="%(taggerdate): %(refname)" --sort=-taggerdate --count=10 refs/tags
まさに私が必要とすることをしました。ありがとう!
%(contents)
必要に応じて、注釈を追加するために使用できます。例git for-each-ref --sort='*authordate' --format='%(taggerdate:short) | %(tag) | %(contents)' refs/tags
git for-each-ref --sort=taggerdate --format '%(tag)'
--sort=creatordate
--sort=taggerdate
注釈付きタグと注釈なしタグの両方で機能しますが、注釈付きタグでのみ機能するようです。テスト済みgit version 2.16.3
Git 2.8(2016年3月)には、git 1.4.4(Oct2006)に遡る別のオプションが記載されています。Eric Wong()によるcommit e914ef0(05 Jan 2016)を
参照してください。(合併によりJunio C浜野- -で108cb77コミットし、2016年1月20日)をele828
gitster
新しいを見る Documentation/git-for-each-ref.txt
commitおよびtagオブジェクトの場合、special
creatordate
およびcreator
fieldsは、オブジェクトタイプに応じて、committer
ortagger
フィールドの適切な日付またはname-email-dateタプルに対応します。
これらは、注釈付きタグと軽量タグの組み合わせで作業することを目的としています。
したがってcreatordate
、タグを使用して動作します:
git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(refname) %(*objectname) %(objectname)' refs/tags | \
sort -n | awk '{ print $4, $3; }'
または:
git tag --sort=-creatordate
「フォームrc-XYZWのバージョン文字列の順序でgitタグを並べ替える方法」で詳しく説明しているように、並べ替え順序をに追加できますgit tag
(Git 2.0以降2014年6月)。
そのソート順には、フィールド名(リストされているgit for-each-ref
) taggerdateが含まれます。これにより、以下のgit tag --sort=taggerdate
ようになり ます(以下のDarVarで説明)
。例として、git/git
リポジトリではv2.10.0
最後にタグをリストします。
v2.9.1
v2.9.2
v2.9.3
v2.10.0-rc0
v2.10.0-rc1
v2.10.0-rc2
v2.10.0
デフォルトの順序ではありません(git tag
):
v2.1.2
v2.1.3
v2.1.4
v2.10.0
v2.10.0-rc0
v2.10.0-rc1
v2.10.0-rc2
v2.2.0
creatordate
!
git log --tags --simplify-by-decoration --pretty="format:%ci %d"
(日付フィールドなしの)からの素晴らしい出力:
git log --tags --decorate --simplify-by-decoration --oneline
依存関係とストライプ化された線形コミット(タグ付けや分岐/マージなどの重要なイベントのみ)の完全な履歴を表示するには:
git log --graph --decorate --simplify-by-decoration --oneline --all
git log --tags --simplify-by-decoration --pretty="format:%ci %d" | grep "tag:"
そしてそれは私にとって最もうまくいきます。
このワンライナーは、手間をかけずに日付とタグを表示します。
git tag --format='%(creatordate:short)%09%(refname:strip=2)'
出力:
2015-04-01 storaged-2.0.0
2015-06-11 storaged-2.1.0
2015-08-06 storaged-2.1.1
...
デフォルトでのタグのソート方法が気に入らない場合--sort=creatordate
は、たとえばオプションを使用して日付でソートできます。詳細については、VonCの回答を参照してください。
注釈付きタグと軽量タグをまとめて、コミット日付に基づいて並べ替えるには、次のようにします。
git for-each-ref --format='%(*committerdate:raw)%(committerdate:raw) %(refname) %(*objectname) %(objectname)' refs/tags | \
sort -n | awk '{ print $4, $3; }'
このコマンドは、すべてのタグと関連するコミットオブジェクトIDを時系列で一覧表示します。
以下はコミットに依存しているため、コミットの日付情報が含まれているかどうかは関係ありません。
git log --tags --decorate --simplify-by-decoration|grep ^commit|grep tag|sed -e 's/^.*: //' -e 's/)$//' -e 's/,.*$//'|tac
上記のジョシュ・リーによる答えは、注文を正確にするためにタグの日付に依存しています。
tac
がわからない-に変更される可能性がありますmore
。とにかくあなたのコマンドはうまくいきました-ありがとう!