是否可以确定当前分支HEAD ^的历史记录是否与远程分支的历史记录的前缀匹配,而无需手动检查提交图?我正在寻找的输出是:true / false。
这个问题的动机是,当我想到自动执行git工作流时,这使我成为检查功能分支运行状况的良好条件。
答案 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个父级也是明智的。