Git分支运行状况:检查当前分支历史记录是否为远程跟踪分支的历史记录的前缀

时间:2019-09-16 22:40:18

标签: git

是否可以确定当前分支HEAD ^的历史记录是否与远程分支的历史记录的前缀匹配,而无需手动检查提交图?我正在寻找的输出是:true / false。

这个问题的动机是,当我想到自动执行git工作流时,这使我成为检查功能分支运行状况的良好条件。

2 个答案:

答案 0 :(得分:3)

我通常使用git merge-base --is-ancestor给出正确/错误的答案。

git fetch
if git merge-base --is-ancestor origin/master master; then
  echo "ok: master is the same or has new additional commits on top of origin/master"
fi

答案 1 :(得分:0)

也许我们应该只检查HEAD〜是否为合并基础:

PARENT=`git rev-parse HEAD~`
MERGE_BASE=`git merge-base origin/master ${PARENT}`
if [ $MERGE_BASE != $PARENT ] ; then
  echo 1>&2 "Parent is not the merge base.  Did you attempt to re-write shared history?"
  exit 1
fi

根据意图,检查HEAD是否只有1个父级也是明智的。