回答
基于@pankijs答案,我做了两个混帐别名:
[alias]
# Delete all local branches but master and the current one, only if they are fully merged with master.
br-delete-useless = "!f(){\
git branch | grep -v "master" | grep -v ^* | xargs git branch -d;\
}; f"
# Delete all local branches but master and the current one.
br-delete-useless-force = "!f(){\
git branch | grep -v "master" | grep -v ^* | xargs git branch -D;\
}; f"
要~/.gitconfig
而添加,作为@torek指出:
请注意,小写字母
-d
不会删除“未完全合并”的麸皮ch(请参阅文档)。使用-D
将删除这些分支,即使这会导致提交变为“丢失”; 使用这个非常谨慎,因为这也删除分支reflogs,以便通常的“从意外删除”东西也不起作用。
基本上,从来没有使用-force
版本,如果你不是300%肯定你不会失去任何重要的东西。因为它永远丢失。
提交到一个被删除的分支应该仍然在reflog中一段时间 – CaptRespect 2017-11-16 18:53:20
确实,提交会停留在reflog中,但不是分支本身,但是我想你可能会发现你的提交,但回到分支状态?我怀疑是这样的。Cherry-pick可以用来检索已删除分支中的提交,但是你将无法恢复分支本身。 – Vadorequest 2018-02-19 23:28:44
git branch -d
(或-D
)允许多个分支名称,但它是一个有点棘手自动提供“除了我现在正在使用的所有分支机构之外,所有地方分支机构“都没有写入至少一点代码。
“最佳”(正式名称是正确的)方法是使用git for-each-ref
得到分支名称:
git for-each-ref --format '%(refname:short)' refs/heads
但随后弄清楚你是在哪个分支更难(git symbolic-ref HEAD
是“正式正确的“方法,如果你想写一个奇特的脚本)。
更方便的是,您可以使用git branch
,它打印您的本地分支名称前面有两个空格或(对于当前分支)以星号*
打印。所以,通过一些运行此删除*
版本,留给你的空间分隔的分支名称,然后你就可以传递给git branch -d
:
git branch -d $(git branch | grep -v '^*')
或:
git branch | grep -v '^*' | xargs git branch -d
注意小写-d
不会删除“非完全合并”分支(请参阅文档)。使用-D
将删除这些分支,即使这会导致提交变为“丢失”;请谨慎使用它,因为这也会删除分支reflog,以便通常的“从意外删除中恢复”的东西也不起作用。
要删除所有分支合并(除了当前-v ‘*’
):
git branch --merged | grep -v '*' | xargs git branch -D
我也回购完成清理做了这样的命令:
alias git-clean="git branch | grep -v '*' | grep -v 'master' | xargs git branch -D && git reset --hard && git clean -d -x -f"
从here拍摄。
- 1. 我可以删除旧的git分支
- 2. 删除除分支以外的所有DOM儿童PHP
- 3. 我可以删除flashlogs.txt吗?
- 4. 我可以删除xxxxxxxAreaRegistration.cs吗?
- 5. tf402455当我删除功能分支
- 6. 可以将mercurial rebase删除一个分支吗?
- 7. 删除li以外的所有ul,但当前li
- 8. 我可以删除gh-pages分支子模块中的本地主分支
- 9. 使用'gitweb'风格显示所有分支。我可以只显示所需的分支数量吗?
- 10. 为什么git worktree添加了创建分支,我可以删除它吗?
- 11. 我们可以删除/清除以前设置的标签到视图吗?
- 12. 我们可以在合并更改后删除分支
- 13. 我可以在GitHub中看到合并功能分支的所有提交吗?
- 14. 在Git中,我可以查看分支合并中的所有提交吗?
- 15. 我可以在当前分支推送处理时检出另一个分支吗?
- 16. 我可以删除这些跨度吗?
- 17. 我们可以删除dom表吗?
- 18. 我可以删除迁移文件吗?
- 19. UITableView:我可以删除多行吗?
- 20. 我可以删除迁移文件吗?
- 21. 我们可以删除ES6课程吗?
- 22. 可以使用以前的变更集创建分支吗?
- 23. 当我用FileSystemWatcher观看文件时可以删除文件吗?
- 24. 我想将我当前的Git分支重置为主分支
- 25. 我可以安全地删除/ var/lib/php5中的所有内容吗?
- 26. 我可以检索已删除文档的所有修订版本吗?
- 27. 我可以编程方式删除EDMX模式下的所有实体吗?
- 28. NSIS可以删除非管理员当前用户的所有快捷方式吗?
- 29. 我可以将本地分支机构映射到git中具有不同前缀的远程分支吗?
- 30. 删除所有没有近期提交的远程分支
[删除所有本地git分支](http://stackoverflow.com/questions/10610327/delete-all-local-git-branches) – 2015-02-18 00:38:11
可能的重复[如何删除所有本地git分支但保留大师与一个命令行?](http://stackoverflow.com/questions/25112684/how-to-remove-all-local-git-branches-but-keep-master-with-one-command-line) – random 2015-02-18 01:41:15
可能[如何删除所有已合并的git分支?](https://stackoverflow.com/questions/6127328/how-can-i-delete-all-git-branches-which-have-been-merged ) – 2017-08-01 09:11:43