我如何删除已合并的所有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
。
上一篇: How can I delete all Git branches which have been merged?