私がやろうとしているのはバージョン チェックです。コードが最小バージョン以上であることを確認したいのです。そのため、現在のブランチに指定されたコミットが含まれているかどうかを確認する方法が必要です。
ベストアンサー1
ナイーブな方法
この結果を得るには複数の方法があります。最初の単純なオプションは、をgit log
使用して特定のコミットを検索することですgrep
が、これは必ずしも正確ではありません。
git log | grep <commit_id>
git log が他の理由でコミット SHA に言及している場合、たとえば別のブランチからの移植の結果としてコミット メッセージに言及している場合、誤検知が発生する可能性があります。
インタラクティブソリューション
指定git branch
されたものを含むすべてのブランチを検索するには、直接使用する方がよいでしょう。COMMIT_ID
git branch --contains $COMMIT_ID
スクリプト可能なソリューション
次のステップは、現在のブランチを見つけることですgit 1.8.1
。
git symbolic-ref --short HEAD
そして組み合わせて
git branch $(git symbolic-ref --short HEAD) --contains $COMMIT_ID
さらに優れたスクリプト可能なソリューション
しかし、上記のコマンドはtrueまたはfalseを返さず、コミットが現在のブランチにある場合は終了コード0を返し、そうでない場合は終了コード1を返す短縮バージョンがあります。
git merge-base --is-ancestor $COMMIT_ID HEAD
終了コードは良いですが、文字列true
やfalse
回答が必要な場合はもう少し追加して、if
bashと組み合わせると次のようになります。
if [ 0 -eq $(git merge-base --is-ancestor $COMMIT_ID HEAD) ]; then echo "true"; else echo "false"; fi