我正在尝试编写一个简单的 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)
我该如何编写这个简单的函数?
将作业直接放入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)