Есть несколько способов достижения этого результата. Первый наивный вариант заключается в использовании git logи поиске определенного коммита с использованием grep, но это не всегда точно
git log | grep <commit_id>
Вам лучше использовать 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, если commit находится в текущей ветви ИЛИ код выхода 1, если нет
git merge-base --is-ancestor $COMMIT_ID HEAD
Выходной код это хорошо, но если вам нужна строка trueили falseответ, вам нужно добавить немного больше, а затем в сочетании с ifbash, вы получите
if [ 0 -eq $(git merge-base --is-ancestor $COMMIT_ID HEAD) ]; then echo "true"; else echo "false"; fi