我git remote prune origin可以删除不再位于远程的本地分支。
git remote prune origin
但我也想删除从那些远程分支创建的本地分支(检查它们是否未合并会很好)。
我怎样才能做到这一点?
修剪后,您可以使用git branch -r. 可以使用 检索具有远程跟踪分支的分支列表git branch -vv。因此,使用这两个列表,您可以找到不在远程列表中的远程跟踪分支。
git branch -r
git branch -vv
这条线应该可以解决问题(需要bashor zsh,不适用于标准 Bourne shell):
bash
zsh
git fetch -p ; git branch -r | awk '{print $1}' | egrep -v -f /dev/fd/0 <(git branch -vv | grep origin) | awk '{print $1}' | xargs git branch -d
此字符串获取远程分支列表并通过egrep标准输入将其传递给。并过滤具有远程跟踪分支的分支(使用git branch -vv并过滤那些具有的分支origin),然后获取该输出的第一列,该列将是分支名称。最后将所有分支名称传递给删除分支命令。
egrep
origin
由于它正在使用该-d选项,因此在运行此命令时,它不会删除尚未合并到您所在分支的分支。
-d