コミットを含むすべてのタグをリストする方法は?


227

この質問はgit特定のコミットを指すすべてのタグを一覧表示する方法に似ていますが、1つの違いがあります。具体的には、タグでマークされたファイルではなく、各タグのツリー内で特定のコミットを含むすべてのタグを検索しますそれ自体(この場合、Makefileの変更のみがタグ付けされています)。


1
特定のファイルにタグを付けることはできません-タグはコミットのみを指します。あなたが本当に解決しようとしている問題の詳細で質問を編集したいと思うかもしれません。
Mark Longair、2011年


注:Windowsでは、クラッシュgit tag --containsないようにする場合は、必ずgit 2.0.x(2014)を使用してください。以下の私の回答を
VonC '26 / 07/26

回答:


348
git tag --contains <commit>

2
私はこれを試しました。ただし、タグに含まれるファイルが1つだけの場合、そのファイルのみを検索すると思います。ツリーは検索されません。また、私が試したリポジトリは非常に大きなgitが保たれ、SIGKILLされました。
atx

21
タグにはファイルが含まれていません。それらはコミットのマーカーにすぎません。それを考えると、あなたの反対は理にかなっているとは思いません。
アマロイ2011年

その場合のメモリ不足のため、コミットが表示されていないはずです。私がこれをどうやって乗り越えることができるか知っていますか?
atx

5
リモートタグに対してこれを行う方法はありますか?ブランチの場合と同様:git branch -r --contains <commit>
Mike

23

大きなリポジトリがある場合、特定のコミットのすべてのタグを一覧表示するには、git 2.0.x(2014年第3四半期)が必要であることに注意してください。

Jean-Jacques Lafay lanfeust69によるコミットcbc60b6を参照してください:

git tag --contains:スタックオーバーフローを回避する

大規模なリポジトリでは、の再帰実装によりcontains(commit, commit_list)スタックオーバーフローが発生する可能性があります。再帰をループに置き換えて修正します。

この問題は、デフォルトでスタックが制限されているLinuxよりもWindowsでより顕著です。

msysGitリストのこのスレッドも参照してください。


9
意図的なしゃれはありませんか?;-)
MikeSchinkel 2017

3
@MikeSchinkelまあ... 少なくとも意図的なものではありません。
VonC、2017

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