すべてのタグを完全なメッセージと一緒にgitにリストする方法は?


360

gitにすべてのタグと完全な注釈またはコミットメッセージを一覧表示させたい。このようなものは近いです:

git tag -n5

これは、タグメッセージの最初の5行までしか表示されないことを除いて、私が望んでいることとまったく同じです。

非常に大きな数を使用できると思います。ここで使用できる最大数はいくつですか?すべてのコンピューターで同じですか?

更新:私はこれについて考える時間を多く持っていました、そして今、私はそれらのいくつかが異常に長い場合、必ずしも各メッセージの全体を表示したくないと思います。大量のメッセージを表示する必要がある特定のニーズは本当にありませんでした(タグメッセージを含め、自分が書くすべてのものに長い間巻き込まれる傾向があることを除いて)。メッセージ全体が表示されるとは限らないので、情報が隠されているように感じました。しかし、情報が多すぎることも悪いことです。


62
git tag -n私のためにそれをした
マーティンバーガー

11
git tag -nマンページによれば、注釈の最初の行のみを印刷します。
Paul Price

@INTPner、同意、-lタグは、特定のパターンのタグをリストするために使用されます。答えを編集します。
Zubair 2014年

回答:


349

これを試してみてください、すべてのタグが注釈とすべてのタグの9行のメッセージとともにリストされます。

git tag -n9

も使用できます

git tag -l -n9

特定のタグをリストする場合:

git tag -l -n9 v3.*

(たとえば、上記のコマンドは「v3」で始まるタグのみを表示します。)

-l、--list指定されたパターン(パターンが指定されていない場合はすべて)に一致する名前のタグをリストします。引数なしで「git tag」を実行すると、すべてのタグもリストされます。パターンはシェルのワイルドカードです(つまり、fnmatch(3)を使用して一致します)。複数のパターンを指定できます。それらのいずれかが一致する場合、タグが表示されます。


6
これは、各注釈の最初の行のみを印刷します。
Paul Price

3
@Paul Price:注釈のみがあり、それ以外の場合はコミットメッセージが出力されます。これは答えではないことに同意ます。
Ciro Santilli郝海东冠状病六四事件法轮功

3
ドキュメントによると、-lオプションはパターンでフィルタリングすることです。ここでそれがどのように役立つかわかりません。何か不足していますか?
still_dreaming_1 2014

2
@INTPnerdはい、これ-lは完全に不要です
Lambart

1
@ P.MyerNoreこの質問が求めている以上のことを行うには、奇妙なバージョンのgitを使用するか、追加の引数を渡す必要があります。ただし、特定の状況では-lが必要であることを知っておくとよいでしょう。
still_dreaming_1 2015

119
git tag -n99

短くて甘い。これにより、各タグの注釈/コミットメッセージから最大99行がリストされます。git tagの公式ドキュメントへのリンクです。

タグあたり最大99行しか表示できないという制限は、ほとんどの場合実際には良いことだと思います。1つのタグに本当に99行を超える行がある場合、残りのすべてを実際に表示する必要はありません。線はあなたですか?タグごとに99行を超える行を表示したい場合は、常にこれをより大きな数に増やすことができます。

つまり、大量のタグメッセージを表示したい特定の状況や理由があると思いますが、どの時点でメッセージ全体を表示したくないのですか?999行以上ある場合は?10,000?1,000,000?私の要点は、通常、表示される行数に上限を設けることは理にかなっており、この数によってそれを設定できます。

私はあなたがタグを見たときにあなたが一般的に見たいことについて議論をしているので、おそらく以下のようなものをエイリアスとして設定することは理にかなっています(下記のIulian Onofreiのコメントから):

git config --global alias.tags 'tag -n99'

つまり、git tag -n99タグを見たいだけのときは常に入力する必要はありませんか?エイリアスを設定すると、タグを表示したいときはいつでもgit tags、ターミナルに入力するだけです。個人的には、これよりさらに一歩進んで、よく使用するすべてのコマンドに対して、さらに多くの短縮されたbashエイリアスを作成することを好みます。そのために、次のようなものを.bashrcファイルに追加できます(Linuxおよび類似の環境で機能します)。

alias gtag='git tag -n99'

次に、タグを表示したいときはいつでも、と入力するだけですgtag。エイリアスパス(gitエイリアスまたはbashエイリアスなど)を使用するもう1つの利点は、個人的な方法にさらにカスタマイズを追加できる場所がすでにあることです。通常は、並べ替えのようにタグを表示したい以下の私のコメントなどのように、それらを特定の方法で。最初のエイリアスの作成の困難を乗り越えたら、カスタマイズした方法で作業したい他の作業のために、エイリアスをさらに簡単に作成できることを実感できますが、それをgit log別の質問/回答用に保存しましょう。


3
git config --global alias.tags 'tag -n99'
ユリアヌスオノフレイ

@IulianOnofrei、いいですね、gitがエイリアスの定義を許可していることを知りませんでした。これはトピックから外れていると思いますが、私は抵抗することができません。これは私が現在使用しているものです(.bashrcまたはそのようなものに配置されています):alias gtag='git for-each-ref --format="%(refname:short) %(taggerdate) %(subject) %(body)" refs/tags | sort -V'
still_dreaming_1 2018年

25

Mark Longairの回答(を使用git show)は、質問で求められているものに近いです。ただし、タグに指定されたコミットと、そのコミットの完全なパッチも含まれます。コミットはタグといくらか無関係である可能性があるため(タグがキャプチャしようとしているのは1つのコミットのみ)、これは望ましくない場合があります。次の方が少し良いと思います:

for t in `git tag -l`; do git cat-file -p `git rev-parse $t`; done

Markのgit showには、私の使用するパッチが表示されませんでした。彼のコマンドは-pまたは--patchを省略していますが、差分をスキップすることを完全に確実にするために、-no-patchを使用できます。(git v2.7.1 / mac上)
AnneTheAgile

13

かなりきれいにはほど遠いですが、次のようなスクリプトまたはエイリアスを作成できます。

for c in $(git for-each-ref refs/tags/ --format='%(refname)'); do echo $c; git show --quiet "$c"; echo; done

置き換えない理由があるgit for-each-ref refs/tags/ --format='%(refname)'とはgit tag -l
Shai Berger

@ShaiBerger:実際にはそうは思いません-私git tagはそれが磁器でgit for-each-refあり、配管工事であると考えていたので、スクリプトの出力はより安定しているはずです。
Mark Longair、2014年

10

最後のタグメッセージのみ:

git cat-file -p $(git rev-parse $(git tag -l | tail -n1)) | tail -n +6

2
グーグルからこれで起こっている他の人のために:特定のタグからのメッセージを表示したい場合: git cat-file -p <tag> | tail -n +6
Kit Peters


2

コマンドラインでこれを行うことをお勧めしますが、Webインターフェースを気にせず、GitHubを使用している場合はhttps://github.com/user/repo/tags、各タグの横にある「...」をクリックして注釈を表示できます。

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