首页 > 解决方案 > 当 git merge 发现冲突或其他问题时,我可以强制失败吗?

问题描述

我正在尝试创建一个自动将分支合并到 master 的批处理文件。在我的 bat 文件中,我有

git merge %1 -m "Merge to master [skip ci]"

为了测试我的批处理文件,我传递了一个不存在的假分支,输出为

merge: test1 - not something we can merge

然后继续下一个命令。

我想要的是,如果合并不起作用(因为分支名称错误或存在冲突),批处理文件应该抛出错误并退出。所以我的 azure devop 管道会知道有什么问题,它会失败整个事情。

可能吗?

标签: gitazure-devops

解决方案


有可能的。您可以使用%ERRORLEVEL%windows 系统中的环境变量来检查脚本命令中的返回码。

环境变量%ERRORLEVEL%包含批处理文件中的返回码或最新的错误级别,即最后执行的命令的最新错误码。

所以你可以IF %ERRORLEVEL% NEQ 0 EXIT /B 1在 git merge 命令之后添加。见下文:

git merge %1 -m "Merge to master [skip ci]"

IF %ERRORLEVEL% NEQ 0 EXIT /B 1

... other commands

当上述 git merge 命令失败时,%ERRORLEVEL%值不会为 0,脚本将以代码 1 退出,这将使您的管道失败,并且将不会执行以下脚本。

查看此文档以获取更多信息。


推荐阅读