[英]How to delete all remote git branches which have already been integrated?
在工作中,我们使用主题分支,这些分支在某个时候集成到几个 (3) 主分支中。 现在我想从我的远程存储库中删除所有已完全集成到主分支的主题分支。 如果这是不可能的,也可以检索已集成的本地分支列表。
由认为它是最好的(而且看起来不错)的人编辑的另一个答案:
git branch -r --merged origin/master | grep -v master | grep "origin/" | cut -d "/" -f 2- | xargs -n 20 git push --delete origin
解释:
git branch -r --merged origin/master
-r
/ --remotes
列出远程跟踪分支。--merged origin/master
只列出其提示可从origin/master
访问的分支。grep -v master
从列表中删除包含master
任何分支名称。 1 -v
表示否定匹配。grep "origin/"
仅选择origin
远程上的分支。cut -d "/" -f 2-
删除origin/
前缀xargs -n 20 git push --delete origin
做一些类似于git push --delete origin branch-a branch-b branch-c …
-n 20
/ --max-args=20
每个命令行最多使用 20 个参数。 至于-n
,我选择 20 作为示例。 更少的参数会使它变慢,例如-n 1
使它一次删除一个; 你有更多的进度提示,因为它会在每次删除一个分支时报告。 更多像-n 200
这样的参数会使它更快(更少的总时间),但它每 200 个分支只报告一次,让你认为它一开始被冻结(其实不是)。 根据您的需要调整数字。 如果省略此选项,则默认数字非常大(在我的机器中为 2048)。
1. 请注意,这也会删除origin/HEAD -> origin/master
,但无论如何您都不想弄乱origin/HEAD
。
原答案:
git push --delete remote topicbranch
或者
git push remote :topicbranch
给出一个分支列表,将是git branch --merged master
您可以一次性完成此操作
git branch --merged master | grep -v master | xargs -n 1 git push --delete origin
如果您发现经常这样做,请将其转储到名为“clean”的脚本中。
如果要从源存储库中删除远程分支:
git branch -r --merged develop | egrep -iv '(master|develop)' | sed 's/origin\///g' | xargs -n 1 git push --delete origin
这些是我用来删除所有合并到origin/master
。 基本上,我从 GitHub 中删除了所有合并到master
的分支。
git remote update -p &&
git branch -r --merged origin/master |
grep origin |
grep -v master |
cut -d"/" -f2- |
xargs git push origin --delete
仅适用于 Powershell 和 Windows 用户。
git branch -r --merged | findstr /v "origin/master" | %{git push origin --delete $_.Trim().Substring(7)}
对于 Windows 机器,我使用这个 PowerShell oneliner 在我们的构建系统上使用 Windows 计划任务每周清理所有合并的远程 git 分支:
git branch --all --merged remotes/origin/master | Select-String -NotMatch "master" | Select-String -NotMatch "HEAD" | Select-String "remotes/origin/" | Foreach-Object { $_.ToString().Replace("remotes/origin/", "").Trim() } | Foreach-Object { git.exe push origin --delete $_ }
备注:它结合了大部分已经给出的答案,但没有限制分支清理的数量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.