使用git远程修剪原点,我可以删除不在远程上的本地分支。

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

我该怎么做呢?


当前回答

git分支的Powershell版本——merged master | grep -v '^[*]*master$' | xargs git branch -d

git分支——合并主| % {if ($ _ -notmatch \ *。*主){git分支- d " $(美元_.Trim())”}}

当您在主分支上时,这将删除已合并到主分支中的任何本地分支。

Git检查主切换。

其他回答

有一个整洁的npm包可以为你做这件事(它应该可以跨平台工作)。

使用npm Install -g git-removed-branches安装它

然后git remove -branches会显示所有过时的本地分支,然后git remove -branches -prune会删除它们。

更多信息请点击这里。

更短更安全的一行代码:

git branch -d $(git branch --merged | cut -c 3- | grep -v master)

在运行分支之前,请确保签出到尚未合并的分支。因为您不能删除当前签入的分支。

你可以通过一些简单的操作来做到这一点:

输出你所有的分支到一个临时文件:

git branch > branches.tmp

打开文件并删除分支以排除它们从本地删除(分支如develop/master/main/…) 通过cat命令将分支名称传递给xargs并删除分支:

cat branches.tmp | xargs git branch -D

这将删除已修剪远程跟踪分支的本地分支。(确保你在主分支上!)

git checkout master
git branch -vv | grep ': gone]' | awk '{print $1}' | xargs git branch -d

细节:

Git branch -vv对于远程已修剪的本地分支显示“gone”。 Mybranch abc1234 [origin/ Mybranch: gone]提交注释 -d将检查它是否已合并(-d将删除它) 错误:分支“mybranch”没有完全合并。

虽然迟到了,但是你可以使用——no-contains选项来避免在使用branch -merged时删除你的主分支

git branch --no-contains master --merged master | xargs git branch -d