Git / bash:知道当前分支是否正在合并

时间:2016-09-13 13:58:02

标签: git bash merge

有没有办法知道当前分支是否处于合并状态?

这意味着,有没有办法知道 MERGE_HEAD 是否存在?

我正在开发一个遍历多个项目的脚本,我希望自动化一些步骤。

我的想法就像是

# for each project
git checkout dev
git pull
git checkout $myBranch
git merge dev
if [[THERE_ARE_CONFLICTS]]
    echo "Some warning"
else
    git push origin $myBranch
fi;

2 个答案:

答案 0 :(得分:1)

如果存在合并冲突,则

git merge具有非零退出状态。也就是说,你可以简单地使用

git merge dev
if [ "$?" -eq 0 ]; then
   echo "All fine."
else
   echo "There were merge conflicts."
fi

如果您无法访问退出状态,那么检查是否存在.git/MERGE_HEAD,如注释中建议的kfb,是检测git当前处于合并状态的可靠方法,如文档所述简要介绍git-merge man page

  

[..]记录$ GIT_DIR / MERGE_HEAD(使下一个git commit命令创建合并提交)[..]

答案 1 :(得分:1)

没有特定的Git命令。 您可以检查.git / MERGE *文件是否存在。

git merge dev
if [ ! -z "$( ls .git/MERGE* 2>/dev/null )" ]; then
   echo "Merge is on-going"
else
   echo "All fine."
fi