检查一个Git分支是否存在

时间:2018-08-17 16:26:00

标签: git batch-file jenkins git-branch

我正在尝试通过Jenkins使用批处理来确定git分支是否存在于特定位置。据我了解,Jenkins运行的命令类似于Batch shell脚本的运行方式。在已经研究了Stack Overflow的这个问题之后(并找到了关于这个类似问题的多个页面),我现在有了检查git分支是否存在的代码。这是代码:

@echo off
cd D:\git\ceos

git rev-parse --verify temp
if %ERRORLEVEL% == 0  (
    echo Branch Exists
) else (
    echo Branch Does Not Exist
)

这是我的问题:如果分支“ temp”确实存在,则此代码可以正常工作并返回“分支存在”。但是,如果“ temp”不存在,Jenkins作业将无法显示

fatal: Needed a single revision
Branch Does Not Exist

很明显,它仍返回if语句的正确分支,因为它返回“不存在分支”,但由于某种原因仍然失败。

我的问题是:即使我的代码逻辑可行(由于其他Stack Overflow问题),在没有分支温度的情况下如何防止这项工作失败?

更新: 事实证明,作业失败的原因是将%ERRORLEVEL%设置为非0的值,并且在到达脚本末尾时,如果没有正确的退出代码,Jenkins作业将无法通过。因此,在“ else”分支中,我只是将错误级别设置回0,并通过了该级别。

1 个答案:

答案 0 :(得分:0)

这将解决您如上所述的紧迫问题,但实际上可能不是您想要的。将您当前的git命令替换为:

git branch --list | findstr /snip temp

您可能想做的是尝试git checkout并在失败的情况下返回错误:

git checkout temp

如果存在,这会将本地文件同步到临时内容。 git返回的错误消息在这种情况下也应该足够,并且比您的消息更有用:

error: pathspec 'temp' did not match any file(s) known to git.