我如何删除已合并的所有Git分支?

我有很多Git分支。 如何删除已经合并的分行? 有没有一种简单的方法可以将它们全部删除而不是逐个删除它们?


更新:

如果您的工作流将这些分支作为可能的祖先,您可以添加其他分支以排除主控和开发。 通常我会分出一个“sprint-start”标签,而master,dev和qa不是祖先。

删除已经合并到当前签出的分支中的所有本地分支:

git branch --merged | egrep -v "(^*|master|dev)" | xargs git branch -d

你可以看到主人和开发人员被排除在外,以防他们是祖先。


您可以删除合并的本地分支:

git branch -d branchname

如果未合并,请使用:

git branch -D branchname

要在旧版本的Git中从远程删除它,请使用:

git push origin :branchname

在更新的Git版本中使用:

git push --delete origin branchname

从远程删除分支后,您可以修剪以删除远程跟踪分支:

git remote prune origin

或修剪个别的远程追踪分支,如其他答案所示:

git branch -dr branchname

希望这可以帮助。


删除已经合并的所有远程分支:

git branch -r --merged | grep -v master | sed 's/origin//:/' | xargs -n 1 git push origin

在更新的Git版本中

git branch -r --merged | grep -v master | sed 's/origin///' | xargs -n 1 git push --delete origin

只是稍微扩展Adam的答案:

通过运行git config -e --global将其添加到您的Git配置中

[alias]
    cleanup = "!git branch --merged | grep  -v '*|master|develop' | xargs -n 1 git branch -d"

然后你可以删除所有的本地合并分支做一个简单的git cleanup

链接地址: http://www.djcxy.com/p/19489.html

上一篇: How can I delete all Git branches which have been merged?

下一篇: PS1 line with git current branch and colors