すべてのGitタグをリストする方法は?


675

私のリポジトリでは、次のコマンドを使用してタグを作成しました。

git tag v1.0.0 -m 'finally a stable release'
git tag v2.0.0 -m 'oops, there was still a major bug!'

リポジトリ内のすべてのタグをどのようにリストしますか?

回答:


953
git tag

十分なはずです。参照してくださいgit tagmanページを


あなたも持っています:

git tag -l <pattern>

指定されたパターン(パターンが指定されていない場合はすべて)に一致する名前のタグをリストします。
引数なしで「git tag」と入力すると、すべてのタグが一覧表示されます。


最近(「gitタグを並べ替える方法は?」、Git 2.0以降の場合)

git tag --sort=<type>

特定の順序で並べ替えます。

サポートされているタイプは次のとおりです。

  • " refname"(辞書式順序)、
  • " version:refname"または " v:refname"(タグ名はバージョンとして扱われます)。

並べ替え順序を逆にするには、「-」を前に付けます。


それは両方をリストします:

  • 注釈付きタグ:Gitデータベースに格納されている完全なオブジェクト。それらはチェックサムされます。タガー名、電子メール、および日付が含まれます。タグ付けメッセージがあります。また、GNU Privacy Guard(GPG)で署名および検証できます。
  • 軽量タグ:既存のコミットへの単純なポインタ

注:タグ付けに関するgit readyの記事では、軽量のタグは承認されていません

引数がない場合、gitタグは基本的に移動しないブランチである「軽量」タグを作成します。
ただし、軽量タグは、おそらく、既知の適切な(または悪い)バージョンをマークしたり、将来使用する必要があるコミットの束をマークしたりするのに役立ちます。
それでも、おそらくこの種のタグをプッシュしたくないでしょう

通常、少なくとも-aオプションを渡して未署名のタグを作成するか、-sまたは-uオプションを介してGPGキーでタグに署名します。


そうは言っても、Charles Baileyは、 ' git tag -m "..."'は実際には適切な(署名されていない注釈付きの)タグ(オプション ' -a')を意味し、軽量のタグではないことを指摘しています。したがって、最初のコマンドで問題ありません。


これは以下とは異なります。

git show-ref --tags -d

タグとそのコミットを一覧表示するもの(「Gitタグリスト、コミットsha1ハッシュの表示」を参照)。注釈付きのタグオブジェクト(独自のコミットSHA1を持つ)を逆参照し、実際のタグ付きコミットを表示するために
-dに注意してください。

同様に、git show --name-only <aTag>タグと関連するコミットをリストします。


6
非-aの、-sまたは-uが明示的に供給されている場合は(-mまたは-Fは-aを意味することを、おそらく追加する価値があるあなたは「適切な」タグオブジェクトを作成せずにタグメッセージを持つことができません。。
CBベイリー

1
自己紹介:この賛成投票により、私は70000(2017年8月6日)達してから1年1か月後、スタックオーバーフローで800000(2018年8月31日)に合格します。
VonC

190

私が好むタグをリストするには:

git tag -n

-nフラグは、タグと共に注釈メッセージの最初のラインを表示し、またはタグがアノテートされていない場合、最初のメッセージの行をコミット。

git tag -n5アノテーションの最初の5行を表示することもできます。


48

またgit show-refタグを対応するコミットに直接関連付けることができるようにかなり便利です:

$ git tag
osgeolive-6.5
v8.0
...

$ git show-ref --tags
e7e66977c1f34be5627a268adb4b9b3d59700e40 refs/tags/osgeolive-6.5
8f27e65bddd7d4b8515ce620fb485fdd78fcdf89 refs/tags/v8.0
...

1
Mercurialのために使用されてhg tagsいるように私git show-ref私のタグとリビジョンを示します。
Justin


15

作ってみるgit tagようにしようではない場合、それは十分なはずgit fetch、その後git tag


4
私は彼が何を意味するのかを考えています:git tag利用可能なタグのリストを見たいだけなら、コマンドを実行するだけで十分でしょう。リモートに存在すると思われるタグが表示されない場合は、ローカルタグがリモートと同期していない可能性があります。この場合、最初git fetchにリモートから最新の参照/ヘッドをフェッチし、次に実際のをフェッチしgit tagます。私は通常、次のようなワンライナーを実行$ git fetch -p && git tagします。最新で最高のものを見ていることを確認するためです。
demisx 2014年

11

利用可能なタグをGitにリストするのは簡単です。入力するだけですgit tag(オプション-lまたはを使用--list)。

$ git tag
v5.5
v6.5

特定のパターンに一致するタグを検索することもできます。

$ git tag -l "v1.8.5*"
v1.8.5
v1.8.5-rc0
v1.8.5-rc1
v1.8.5-rc2

gitリポジトリで最新のタグを取得する

このコマンドは、コミットから到達可能な最新のタグを見つけます。タグがコミットを指す場合、タグのみが表示されます。それ以外の場合は、タグ付けされたオブジェクトの上に追加のコミットの数を付けたタグ名と、最新のコミットの省略されたオブジェクト名の接尾辞を付けます。

git describe

--abbrev設定する0と、コマンドを使用して、tagname接尾辞なしで最も近いものを見つけることができます。

git describe --abbrev=0

その他の例:

git describe --abbrev=0 --tags # gets tag from current branch
git describe --tags `git rev-list --tags --max-count=1` // gets tags across all branches, not just the current branch

リモートに存在しないローカルgitタグを整理する方法

簡単に言えば、のようなことを行おうとするgit fetch -p -tと、gitバージョン以降では機能しません1.9.4

ただし、最新バージョンでも機能する簡単な回避策があります。

git tag -l | xargs git tag -d  // remove all local tags
git fetch -t                   // fetch remote tags

REV-リスト関連のコマンドは、私のリストを与えたが、エラーで終了:v0.1.0-rc1 fatal: No tags can describe '5db7534...4a94'. Try --always, or create some tags.
not2qubit


6

タグ名をローカルで確認する場合は、タグを作成したパス(ローカルパス)に移動する必要があります。オブジェクトを配置した場所を意味します。次に、コマンドを入力します。

git show --name-only <tagname>

そのタグ名の下にあるすべてのオブジェクトが表示されます。私はTeradataで作業しており、オブジェクトはビュー、テーブルなどを意味します


4

あなたは、すべての既存のタグを一覧表示することができますgit tagか、とリストフィルタリングができgit tag -l 'v1.1.*'*ワイルドカードとして機能します。でマークされv1.1たタグのリストを返します。

呼び出すgit tagと、注釈の内容が表示されないことに気づくでしょう。それらをプレビューする-nには、コマンドに追加する必要がありますgit tag -n2

$ git tag -l -n2

v1.0リリースバージョン1.0

v1.1リリースバージョン1.1

このコマンドは、タグメッセージの最大3行で既存のすべてのタグを一覧表示します。デフォルト-nでは、最初の行のみが表示されます。詳細については、このタグ関連の記事も確認してください。


0

GUIでこれを行うには、「gitk」が名前付きビューをサポートしていることを確認しました。ビューには、コミットを選択するためのいくつかのオプションがあります。一つは「すべてのタグ」を選択するためのボックスです。それは私がタグを見るために働くようです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.