zsh 函数检查 git 分支是否存在,然后删除这些 git 分支

Joh*_*etz 1 git shell zsh

我正在尝试编写一个简单的 zsh 函数来删除具有特定模式的所有 git 分支。该函数包含一个简单的条件,用于检查是否需要删除任何分支。如果是这样,它将删除它们。如果没有,则回显没有要删除的分支。

这是我到目前为止所拥有的:

deletedependabotbranches () {
  dependabot_branches=$(git branch | grep '^\*\?\s*dependabot/')
  if dependabot_branches ; then
    echo "Deleting dependabot branches..."
    git branch -D dependabot_branches
  else
    echo "No dependabot PR's found"
  fi
}
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误:

command not found: dependabot_branches
Run Code Online (Sandbox Code Playgroud)

我该如何编写这个简单的函数?

jth*_*ill 6

将作业直接放入if如下所示:

if dependabot_branches=$(git branch | grep '^\*\?\s*dependabot/')
then this
else that
fi
Run Code Online (Sandbox Code Playgroud)

但是你的脚本有更严重的问题,git branch并不是真正适合脚本使用,如果你签出了依赖机器人分支之一,你将最终执行通配符分支删除。

git for-each-ref --format='delete %(refname)' refs/heads/dependabot\* \
| git update-ref --stdin
Run Code Online (Sandbox Code Playgroud)