Git 如果分支不存在,如何删除没有错误消息的分支?
我想在脚本中包含一个删除本地Git分支的命令,如果分支不存在,我不希望显示任何错误消息。同时,我也不希望状态代码指示Git命令失败 给出以下示例:Git 如果分支不存在,如何删除没有错误消息的分支?,git,branch,Git,Branch,我想在脚本中包含一个删除本地Git分支的命令,如果分支不存在,我不希望显示任何错误消息。同时,我也不希望状态代码指示Git命令失败 给出以下示例: git branch -D foo 如果分支存在,则会将其删除,并且命令的返回状态为0,表示成功。如果我再次运行相同的脚本,分支将不再存在,因此命令将失败,打印 error: branch 'foo' not found. 并且Git命令的返回状态为>0,这表示出现错误 有没有一种方法可以使命令静音,这样它就不必关心分支是否首先在那里了?理想情况
git branch -D foo
如果分支存在,则会将其删除,并且命令的返回状态为0,表示成功。如果我再次运行相同的脚本,分支将不再存在,因此命令将失败,打印
error: branch 'foo' not found.
并且Git命令的返回状态为>0,这表示出现错误
有没有一种方法可以使命令静音,这样它就不必关心分支是否首先在那里了?理想情况下,它不会打印错误消息,也不会通过非零返回状态指示故障
我知道我可以使用一些脚本魔法来解决这些问题,但我更喜欢一个简单的解决方案,因为我必须在Windows(.bat)和Unix/Linux/Mac(.sh)上做同样的事情
我是错过了一个选择,还是运气不好?试试这个:
branch="${1:?foo}"
if git show-ref --verify --quiet "refs/heads/$branch"; then
echo "Branch exists."
.......
如果分支机构存在,则该分支机构将被删除,并且返回状态为。。是0。。。有没有办法让命令静音,这样它就不在乎分支是否在那里。。。它不会打印错误消息,也不会通过非零返回状态指示故障
以下示例将抑制所有输出,并通过退出代码指示成功或失败:
Linux $ git branch -D <branch> &>/dev/null
Windows $ git branch -D <branch> 1>nul 2>nul
Linux$git分支-D&>/dev/null
Windows$git分支-D 1>nul 2>nul
如果您打算有意识地忽略退出代码,只需不检查它,然后继续执行脚本中的下一个命令。好的一点-我可以使用If语句,但我也必须对Windows脚本执行同样的操作。我希望在“git branch”命令上有一些切换我错过了。请注意,如果您使用“-e”开关在bash或sh(可能是ksh?)下运行脚本,那么“如果任何命令返回失败,则存在”,脚本将终止。您可以阻止它并处理这样的失败命令:“git branch-D&>/dev/null | | true”。当git返回错误时,这将执行“true”,从而在所有情况下有效地将整个语句转化为成功执行