小编典典

如何修剪远程不再存在的本地跟踪分支

all

git remote prune origin可以删除不再位于远程的本地分支。

但我也想删除从那些远程分支创建的本地分支(检查它们是否未合并会很好)。

我怎样才能做到这一点?


阅读 118

收藏
2022-02-28

共1个答案

小编典典

修剪后,您可以使用git branch -r. 可以使用 检索具有远程跟踪分支的分支列表git branch -vv。因此,使用这两个列表,您可以找到不在远程列表中的远程跟踪分支。

这条线应该可以解决问题(需要bashor zsh,不适用于标准 Bourne shell):

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),然后获取该输出的第一列,该列将是分支名称。最后将所有分支名称传递给删除分支命令。

由于它正在使用该-d选项,因此在运行此命令时,它不会删除尚未合并到您所在分支的分支。

2022-02-28