使用git远程修剪原点,我可以删除不在远程上的本地分支。
但是我还想删除从这些远程分支创建的本地分支(检查它们是否未合并会很好)。
我该怎么做呢?
使用git远程修剪原点,我可以删除不在远程上的本地分支。
但是我还想删除从这些远程分支创建的本地分支(检查它们是否未合并会很好)。
我该怎么做呢?
当前回答
使用GUI?手动操作,但快捷方便。
$ git gui
选择“分支->删除”。您可以使用ctrl-click(窗口)选择多个分支并删除它们。
其他回答
基于以上的答案,我想出了这个简单的解决方案:
git remote prune origin; git branch -r | awk '{print $1}' | egrep -v -f /dev/fd/0 <(git branch -vv | grep origin) | awk '{print $1}' | xargs git branch -d
不知道如何一次性完成,但是git git branch -d <branchname>只会在完全合并的情况下删除本地分支。注意小写的d。
git branch -D <branchname>(注意大写D)将删除本地分支,无论其合并状态如何。
正如@tzacks所说…有一个NPM包非常方便。只做:
npx git-removed-branches --prune
(我本想评论一下,但名声不够好)
如果要删除所有已经合并到master中的本地分支,可以使用以下命令:
git branch --merged master | grep -v '^[ *]*master$' | xargs git branch -d
如果你使用main作为你的主分支,你应该相应地修改命令:
git branch --merged main | grep -v '^[ *]*main$' | xargs git branch -d
更多信息。
尝试在git bash中,获取并修剪对已删除分支的引用,然后修剪跟踪已删除分支的本地分支:
git fetch -p && git branch -d `git branch -vv | grep ': gone]' | awk '{print $1}' | xargs`
记住先签出一个不会被删除的分支,这样就不会阻止该分支的删除。