Git:确定分支是否处于合并冲突状态

Jas*_*dly 9 git bash

我正在写一个bash脚本来做一些自动化.部分脚本涉及导航到本地存储,切换到本地主分支,然后拉远程主控以使用最新代码更新本地主分支.

有没有人知道我是否可以通过编程方式确定拉动是否导致合并冲突,以便我可以在那时保释而不执行脚本的其余部分?

任何帮助/信息表示赞赏,谢谢!

tor*_*rek 15

使用git ls-files -u.它打印未合并的文件.如果没有打印,则没有未合并的文件.

然而,虽然这是你问"按要求"的问题的直接答案,但git pull在脚本中使用有点冒险:pullfetch为你运行的便利脚本,然后(取决于你指导和/或配置你的方式) repo)运行mergerebase为你运行.鉴于您正在编写一个具有特定目标的脚本,您应该最有可能使用执行更具体事情的低级命令.例如,您可以使用git fetch后跟(正如Etan Reisner在评论中建议的那样)git merge --ff-only以便永远不会尝试合并.


fli*_*lix 8

根据torek给出的答案,这是一个现成的代码段:

CONFLICTS=$(git ls-files -u | wc -l)
if [ "$CONFLICTS" -gt 0 ] ; then
   echo "There is a merge conflict. Aborting"
   git merge --abort
   exit 1
fi
Run Code Online (Sandbox Code Playgroud)