Git 2.0 (2014 年 6 月) では、並べ替え順序を指定できるようになります。
Nguyễn Thái Ngọc Duy ( )によって作成されたコミット 9ef176bのコミット b6de0c6を参照してください。pclouds
--sort=<type>
特定の順序で並べ替えます。
サポートされているタイプは次のとおりです。
- "
refname" (辞書順),
- "
version:refname" または " v:refname" (タグ名はバージョンとして扱われます)。
-ソート順を逆にするには、先頭に" " を追加します。
したがって、次の場合:
git tag foo1.3 &&
git tag foo1.6 &&
git tag foo1.10
これがあなたが得るものです:
# lexical sort
git tag -l --sort=refname "foo*"
foo1.10
foo1.3
foo1.6
# version sort
git tag -l --sort=version:refname "foo*"
foo1.3
foo1.6
foo1.10
# reverse version sort
git tag -l --sort=-version:refname "foo*"
foo1.10
foo1.6
foo1.3
# reverse lexical sort
git tag -l --sort=-refname "foo*"
foo1.6
foo1.3
foo1.10
commit b150794 (by Jacob Keller、git 2.1.0、2014 年 8 月)以来、そのデフォルトの順序を指定できます。
tag.sort
この変数は、 で表示されるときのタグのソート順を制御しますgit-tag。
" --sort=<value>" オプションを指定しないと、この変数の値がデフォルトとして使用されます。
ロビンストの コメント:
バージョンの並べ替え順序をデフォルトとして設定できるようになりました (Git 2.1+):
git config --global tag.sort version:refname
コメントでLeo Galleguillosが指摘したように:
最新のタグを最初に(降順で)表示するように Git を構成するには、 version の前にハイフンを追加します。
コマンドは次のようになります。
git config --global tag.sort -version:refname
Git 2.4 (Q2 2015)では、構成変数を使用して、 の前に来るように指定できますversionsort.prereleasev1.0-pre1v1.0。
Junio C Hamano ( )によるコミット f57610aを参照してください。gitster
注 (以下を参照)versionsort.prereleaseSuffixは現在 (2017 年) の非推奨のエイリアスですversionsort.suffix。
git 2.7.1 (2016 年 2 月) は、git tagそれ自体の出力を改善します。
commit 0571979 (2016 年 1 月 26 日) およびcommit 1d094db (2016 年 1 月 24 日) by Jeff King ( peff)を参照してください。
( 2016 年 2 月 1 日にcommit 8bad3deでJunio C Hamanoによってマージされました)gitster
tagtags/foo: あいまいなタグ名を " "として表示しない
b7cc53e ( tag.c: use ' ref-filter' APIs、2015-07-11) 以降、あいまいgit tagな名前のタグ (つまり、" heads/foo" と " tags/foo" の両方が存在する場合) を " tags/foo" ではなく" " として表示するようになりfooました。
これは両方です:
- 無意味です。" " の出力に
git tagは のみが含まれているため、" " は " " 内のものを意味するrefs/tagsことがわかります。foorefs/tags
- あいまいです。
foo元の出力では、行 " " が " " が存在することを意味していることがわかりrefs/tags/fooます。refs/tags/foo新しい出力では、「 」または「 」のどちらを意味するのかが明確ではありませんrefs/tags/tags/foo。
これが発生する理由は、コミット b7cc53e がgit tagref-filter の " %(refname:short)" 出力フォーマットを使用するように切り替えられたためfor-each-refです。このより一般的なコードは、私たちがタグだけを気にしていることを知らず、 を使用shorten_unambiguous_refしてshort-name.
" " だけを気にすることを伝える必要がありrefs/tags/、その値に関しては短くする必要があります。
strip整形言語 " " に新しい修飾子を追加して、特定のプレフィックス コンポーネントのセットを削除してみましょう。
これにより、" " が修正git tagされ、ユーザーは独自のカスタム形式 (" tag" または " for-each-ref" 用)から同じ動作を呼び出せるようになりますが、" :short" はすべての場所で同じ一貫した意味を持ちます。
strip=<N>が追加されている場合、<N>スラッシュで区切られたパス コンポーネントを refname の先頭から削除します (たとえば、 に%(refname:strip=2)変わりrefs/tags/fooますfoo。
<N>は正の整数でなければなりません。
表示された ref のコンポーネントが よりも少ない場合<N>、コマンドはエラーで中止されます。
の場合git tag、指定されていない場合、デフォルトは%(refname:strip=2)です。
Git 2.12 の更新 (2017 年第 1 四半期)
コミット c026557、コミットb178464、コミット 51acfa9、コミット b823166、コミット 109064a、コミット 0c1b487、コミット 9ffda48、コミット eba286e (2016 年 12 月 8 日) by SZEDER Gábor ( szeder)を参照してください。
( 2017 年 1 月 23 日、コミット 1ac244dでJunio C Hamanoによってマージされました)gitster
versionsort.prereleaseSuffixの非推奨のエイリアスですversionsort.suffix。
prereleaseSuffix" " で使用されているバージョン比較の機能はgit tag -l、同じリリースの 2 つ以上のプレリリースが存在する場合 (たとえば、2.0、2.0-beta1、および2.0-beta2
が存在し、コードで および を比較する必要がある2.0-beta1場合) に正しく機能しませんでした2.0-beta2。