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

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

我该怎么做呢?


当前回答

Powershell:

git branch -D (git branch --merged |% { $_.trim() } )

其他回答

使用GUI?手动操作,但快捷方便。

$ git gui

选择“分支->删除”。您可以使用ctrl-click(窗口)选择多个分支并删除它们。

不知道如何一次性完成,但是git git branch -d <branchname>只会在完全合并的情况下删除本地分支。注意小写的d。

git branch -D <branchname>(注意大写D)将删除本地分支,无论其合并状态如何。

基于上面的答案,我使用了更短的一行:

git remote prune origin | awk 'BEGIN{FS="origin/"};/pruned/{print $2}' | xargs -r git branch -d

此外,如果你已经修剪过了,并且有局部的树枝悬挂着,那么这将清理它们:

git branch -vv | awk '/^ .*gone/{print $1}' | xargs -r 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”没有完全合并。

如果要删除所有已经合并到master中的本地分支,可以使用以下命令:

git branch --merged master | grep -v '^[ *]*master$' | xargs git branch -d

如果你使用main作为你的主分支,你应该相应地修改命令:

git branch --merged main | grep -v '^[ *]*main$' | xargs git branch -d

更多信息。