我要做的是版本检查。我想确保代码保持在最低版本之上。所以我需要一种方法来知道当前分支是否包含指定的提交。
最佳答案
有多种方法可以实现这一结果。第一个天真的选择是使用 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 否则返回退出代码 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
关于git - 给定一个提交 ID,如何判断当前分支是否包含该提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43535132/