web-dev-qa-db-ja.com

gitで特定のコミットを指すすべてのタグをリストする方法

コマンドgit describegit-name-revを見ましたが、それらを取得して複数のタグをリストすることはできませんでした。

例:sha1 48eb354があり、タグAとBがそれを指していることがわかっています。したがって、「A、B」に類似した出力を生成するgitコマンドgit {something} 48eb354が必要です。他のタグまたはブランチに関連する参照がタグと完全に一致することを知ることに興味はありません。

66
Zitrax

git show-ref --tags -d | grep ^48eb354 | sed -e 's,.* refs/tags/,,' -e 's/\^{}//'

軽量タグと注釈付きタグの両方で機能します。

39
max

git tag --points-at HEAD

すべてのタグをHEADに表示します。HEADを任意のsha1 idに置き換えることもできます。

163
user2159398

次を使用できます。

git tag --contains <commit>

特定のコミットですべてのタグを表示します。次の代わりに使用できます。

git tag --points-at HEAD

1.7.10からのみ利用可能です。

37
yorammi
git for-each-ref --format='%(objectname) %(refname:short)' refs/tags/ |
  grep ^$commit_id |
    cut -d' ' -f2

残念なことに、これ以上簡単にはできません。 git tag の別のフラグは、コミットIDを含めるためにgit for-each-ref呼び出しを自然に表現できます。

4

次のコマンドはジョブを実行しますが、.gitディレクトリのコンテンツを直接解析するため、gitリポジトリ形式が変更されると破損する可能性があります。

grep -l -r -e '^48eb354' .git/refs/tags|sed -e 's,.*/,,'
1