首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果分支不存在,如何删除没有错误消息的分支?

问如果分支不存在,如何删除没有错误消息的分支?
EN

Stack Overflow用户
提问于 2014-03-13 10:18:55
回答 4查看 6.3K关注 0票数 18

我想在脚本中包含一个删除本地Git分支的命令,如果这个分支不存在,我不希望显示任何错误消息。同时,我也不希望Git命令出现故障的状态代码。

给出了以下示例:

代码语言:javascript
复制
git branch -D foo

如果存在分支,则删除该分支,命令的返回状态为0,表示成功。如果我再次运行相同的脚本,分支就不再存在,因此命令失败,就会打印

代码语言:javascript
复制
error: branch 'foo' not found.

Git命令的返回状态为>0,表示错误。

有没有办法让命令安静下来,这样它就不关心分支是否在那里了?理想情况下,它不会打印错误消息,也不会通过非零返回状态指示失败。

我知道我可以使用一些脚本魔术来解决这些问题,但是我更喜欢一个简单的解决方案,因为我必须在Windows (.bat)和Unix/Linux/Mac (.sh)上做同样的事情。

我错过了一个选择,还是我运气不好?

EN

回答 4

Stack Overflow用户

发布于 2014-03-14 10:36:36

如果存在分支,则删除该分支,并且返回状态。是0 ..。有没有办法让命令安静下来,这样它就不关心分支是否在那里了.它不会打印错误消息,也不会通过非零返回状态指示失败。

以下示例将禁止所有输出,并通过退出代码指示成功或失败:

代码语言:javascript
复制
Linux   $ git branch -D <branch> &>/dev/null    
Windows $ git branch -D <branch> 1>nul 2>nul

如果您有意忽略退出代码,只需不检查它,然后继续执行脚本中的下一个命令。

或者,如果必须以零代码退出,那么

代码语言:javascript
复制
Linux   $ git branch -D <branch> &>/dev/null || true  
Windows $ git branch -D <branch> 1>nul 2>nul || ver>nul
票数 14
EN

Stack Overflow用户

发布于 2014-03-13 10:58:57

试试这个:

代码语言:javascript
复制
branch="${1:?foo}"  

if git show-ref --verify --quiet "refs/heads/$branch"; then
echo "Branch exists."
.......
票数 4
EN

Stack Overflow用户

发布于 2022-01-21 16:39:51

在运行ref之后,使用core命令,因此它认为结果是成功的:

代码语言:javascript
复制
git update-ref -d refs/heads/$branch

像这样的东西是“不要使用方便

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22375434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档