git - 当 git merge 发现冲突或其他问题时,我可以强制失败吗?
问题描述
我正在尝试创建一个自动将分支合并到 master 的批处理文件。在我的 bat 文件中,我有
git merge %1 -m "Merge to master [skip ci]"
为了测试我的批处理文件,我传递了一个不存在的假分支,输出为
merge: test1 - not something we can merge
然后继续下一个命令。
我想要的是,如果合并不起作用(因为分支名称错误或存在冲突),批处理文件应该抛出错误并退出。所以我的 azure devop 管道会知道有什么问题,它会失败整个事情。
可能吗?
解决方案
有可能的。您可以使用%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 退出,这将使您的管道失败,并且将不会执行以下脚本。
查看此文档以获取更多信息。
推荐阅读
- angular - 当验证中使用的 @Input 修饰变量发生更改时,为什么 *ngIf 不更新?
- java - 线程的意外行为
- flutter - 通过 dart 上的循环生成列表
- c - 为什么将“超出范围的整数转换为整数”会导致 IB,但将“超出范围的浮点数转换为整数”会导致 UB?
- mysql - 如何获取存储在 AWS 中的数据库的表关系(主键和外键)?
- java - Intellij IDEA:如果将依赖项存储格式更改为“Eclipse”,则“无法找到或加载主类”
- c - C. 错误:重复的函数定义。这可能是什么原因?
- algorithm - 是否有用于混合油漆颜色的逆算法?
- mysql - 无法为从 Xamarin 表单到我的 Google MySQL 数据库的连接字符串获取正确的服务器名称
- django - 将用户重定向到外部站点并获得响应