Es gibt mehrere Möglichkeiten, um dieses Ergebnis zu erzielen. Die erste naive Option besteht darin, git logein bestimmtes Commit zu verwenden und danach zu suchen grep, aber das ist nicht immer genau
git log | grep <commit_id>
Es ist besser, git branchdirekt zu verwenden, um alle Zweige zu finden, die gegebenes COMMIT_IDVerwenden enthalten
git branch --contains $COMMIT_ID
Der nächste Schritt besteht darin, den aktuellen Zweig herauszufinden, der seit der git 1.8.1Verwendung durchgeführt werden kann
git symbolic-ref --short HEAD
Und kombiniert als
git branch $(git symbolic-ref --short HEAD) --contains $COMMIT_ID
Der obige Befehl gibt jedoch weder true noch false zurück, und es gibt eine kürzere Version, die den Exit-Code 0 zurückgibt, wenn sich das Commit im aktuellen Zweig befindet, oder den Exit-Code 1, wenn nicht
git merge-base --is-ancestor $COMMIT_ID HEAD
Exit-Code ist nett, aber wenn Sie einen String trueoder falseeine Antwort wünschen , müssen Sie etwas mehr hinzufügen und dann mit ifBash kombinieren
if [ 0 -eq $(git merge-base --is-ancestor $COMMIT_ID HEAD) ]; then echo "true"; else echo "false"; fi