我最终得到了与kcm的方法非常相似的东西。我想要一些可以清除所有跟踪远程分支的本地分支的东西,on origin
,远程分支已被删除(gone
)。我不想删除从未设置为跟踪远程分支的本地分支(即:我的本地开发分支)。此外,我想要一个简单的单行程序,它只使用git
. 或其他简单的 CLI 工具,而不是编写自定义脚本。我最终使用了一些grep
andawk
来制作这个简单的命令,然后将它作为别名添加到我的~/.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