1. ホーム
  2. git

ブランチに含まれるタグをリストアップする

2023-08-19 13:12:24

質問

与えられたブランチに含まれるタグをリストアップするには、どうしたらよいでしょうか。

git tag --contains <commit>

どの "指定されたコミットを含むタグだけをリストアップします" 。

このようなものが存在しない場合、これをスクリプト化するために、あるコミットが他のコミットに含まれているかどうかをテストするにはどうすればよいでしょうか。

私はこれを行うことができました。

commit=$(git rev-parse $branch)
for tag in $(git tag)
do
    git log --pretty=%H $tag | grep -q -E "^$commit$"
done

しかし、タグやコミットの多いリポジトリでは時間がかかるかもしれないので、もっと良い方法があればと思います。

どのように解決するのですか?

これは、あなたが望むものに近いかもしれません。

git log --simplify-by-decoration --decorate --pretty=oneline "$committish" | fgrep 'tag: '

しかし、より一般的な状況は、単に最も新しいタグを見つけることです。

git describe --tags --abbrev=0 "$committish"

  • --tags は軽量タグに対して検索を行うので、注釈付きタグのみを考慮したい場合は使用しないでください。
  • を使用しないでください。 --abbrev=0 は使用しないでください。もし、通常の「『トップコミット』の数と省略されたハッシュ」サフィックス (例: v1.7.0-17-g7e5eb8) も表示したい場合は。