Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 如果分支不存在,如何删除没有错误消息的分支?_Git_Branch - Fatal编程技术网

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

Git 如果分支不存在,如何删除没有错误消息的分支?,git,branch,Git,Branch,我想在脚本中包含一个删除本地Git分支的命令,如果分支不存在,我不希望显示任何错误消息。同时,我也不希望状态代码指示Git命令失败 给出以下示例: git branch -D foo 如果分支存在,则会将其删除,并且命令的返回状态为0,表示成功。如果我再次运行相同的脚本,分支将不再存在,因此命令将失败,打印 error: branch 'foo' not found. 并且Git命令的返回状态为>0,这表示出现错误 有没有一种方法可以使命令静音,这样它就不必关心分支是否首先在那里了?理想情况

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

给出以下示例:

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”,从而在所有情况下有效地将整个语句转化为成功执行