コマンドgit describe
とgit-name-rev
を見ましたが、それらを取得して複数のタグをリストすることはできませんでした。
例:sha1 48eb354があり、タグAとBがそれを指していることがわかっています。したがって、「A、B」に類似した出力を生成するgitコマンドgit {something} 48eb354
が必要です。他のタグまたはブランチに関連する参照がタグと完全に一致することを知ることに興味はありません。
git show-ref --tags -d | grep ^48eb354 | sed -e 's,.* refs/tags/,,' -e 's/\^{}//'
軽量タグと注釈付きタグの両方で機能します。
git tag --points-at HEAD
すべてのタグをHEADに表示します。HEADを任意のsha1 idに置き換えることもできます。
次を使用できます。
git tag --contains <commit>
特定のコミットですべてのタグを表示します。次の代わりに使用できます。
git tag --points-at HEAD
1.7.10からのみ利用可能です。
git for-each-ref --format='%(objectname) %(refname:short)' refs/tags/ |
grep ^$commit_id |
cut -d' ' -f2
残念なことに、これ以上簡単にはできません。 git tag
の別のフラグは、コミットIDを含めるためにgit for-each-ref
呼び出しを自然に表現できます。
次のコマンドはジョブを実行しますが、.gitディレクトリのコンテンツを直接解析するため、gitリポジトリ形式が変更されると破損する可能性があります。
grep -l -r -e '^48eb354' .git/refs/tags|sed -e 's,.*/,,'