Ada beberapa cara untuk mencapai hasil ini. Opsi naif pertama adalah menggunakan git logdan mencari komit tertentu menggunakan grep, tetapi itu tidak selalu tepat
git log | grep <commit_id>
Anda lebih baik menggunakan git branchsecara langsung untuk menemukan semua cabang yang mengandung diberikan COMMIT_IDmenggunakan
git branch --contains $COMMIT_ID
Langkah selanjutnya adalah mencari cabang saat ini yang dapat dilakukan sejak git 1.8.1menggunakan
git symbolic-ref --short HEAD
Dan digabungkan bersama sebagai
git branch $(git symbolic-ref --short HEAD) --contains $COMMIT_ID
Tetapi perintah di atas tidak mengembalikan benar atau salah dan ada versi yang lebih pendek yang mengembalikan kode keluar 0 jika komit di cabang saat ini ATAU kode keluar 1 jika tidak
git merge-base --is-ancestor $COMMIT_ID HEAD
Kode keluar memang bagus, tetapi seperti yang Anda inginkan string trueatau falsesebagai jawaban, Anda perlu menambahkan sedikit lebih banyak dan kemudian dikombinasikan dengan ifdari bash Anda dapatkan
if [ 0 -eq $(git merge-base --is-ancestor $COMMIT_ID HEAD) ]; then echo "true"; else echo "false"; fi