git - 给定一个提交 ID,如何判断当前分支是否包含该提交?

标签 git

我要做的是版本检查。我想确保代码保持在最低版本之上。所以我需要一种方法来知道当前分支是否包含指定的提交。

最佳答案

有多种方法可以实现这一结果。第一个天真的选择是使用 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

退出代码很好,但是如果您想要字符串 truefalse 作为答案,您需要添加更多内容然后与 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/

相关文章:

git - 我应该将 jar 依赖项放在共享存储库中还是只放在源文件中?

.bat 脚本中的 git 克隆

git - 如何使用 Git 扩展创建补丁

Git 命令显示我对给定远程的权限

linux - 未触发 Git 提交后 Hook

git - curl 中的 Bitbucket 管道变量

git - 如何在压缩时省略提交

git - gitflow 修补程序应该如何工作?

ruby-on-rails - git post-receive hook 没有运行 bundle install

git - 显示有多少提交分支领先于/落后于 master 的别名