我最终得到了与kcm的方法非常相似的东西。我想要一些可以清除所有跟踪远程分支的本地分支的东西,on origin,远程分支已被删除(gone)。我不想删除从未设置为跟踪远程分支的本地分支(即:我的本地开发分支)。此外,我想要一个简单的单行程序,它只使用git. 或其他简单的 CLI 工具,而不是编写自定义脚本。我最终使用了一些grepandawk来制作这个简单的命令,然后将它作为别名添加到我的~/.gitconfig.
[alias]
prune-branches = !git remote prune origin && git branch -vv | grep ': gone]' | awk '{print $1}' | xargs -r git branch -D
这是一个git config --global ...可以轻松将其添加为的命令git prune-branches:
git config --global alias.prune-branches '!git remote prune origin && git branch -vv | grep '"'"': gone]'"'"' | awk '"'"'{print $1}'"'"' | xargs -r git branch -d'
注意:正如Matteo在他之前对另一个答案的评论中指出的那样,使用-D标志git branch可能非常危险。因此,在配置命令中,我使用-d选项 togit branch而不是-D; 我-D在我的实际配置中使用。我使用-D是因为我不想听到 Git 抱怨未合并的分支,我只想让它们消失。您可能也需要此功能。如果是这样,只需在该配置命令的末尾使用-D而不是。-d