我正在写一个bash脚本来做一些自动化.部分脚本涉及导航到本地存储,切换到本地主分支,然后拉远程主控以使用最新代码更新本地主分支.
有没有人知道我是否可以通过编程方式确定拉动是否导致合并冲突,以便我可以在那时保释而不执行脚本的其余部分?
任何帮助/信息表示赞赏,谢谢!
tor*_*rek 15
使用git ls-files -u.它打印未合并的文件.如果没有打印,则没有未合并的文件.
然而,虽然这是你问"按要求"的问题的直接答案,但git pull在脚本中使用有点冒险:pull是fetch为你运行的便利脚本,然后(取决于你指导和/或配置你的方式) repo)运行merge或rebase为你运行.鉴于您正在编写一个具有特定目标的脚本,您应该最有可能使用执行更具体事情的低级命令.例如,您可以使用git fetch后跟(正如Etan Reisner在评论中建议的那样)git merge --ff-only以便永远不会尝试合并.
根据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)