首页 > 解决方案 > 如何列出已经完全包含在 HEAD 中的旧分支

问题描述

我们有一个包含大量git历史的大型 repo,并且 remoteorigin包含许多已包含在master. 有什么简单的方法可以列出 HEAD 中已经包含的本地和远程分支?

我知道如何列出包含给定提交的分支?如果我想做反向操作,检查哪些分支已经包含提交 HEAD 会有所帮助。

标签: gitbranching-and-merging

解决方案


快速备忘单:

git branch -a --merged HEAD

将列出已经完全包含在HEAD. 这可用于列出可能被删除的旧分支标签。请注意,它还将列出当前签出的分支(标有星号),因此您可能不应该盲目地删除所有这些分支。(这是对原始问题的确切答案,有关其他信息,请参见下文。)


git branch -a --contains HEAD

会做相反的事情。它将列出所有已经包含提交的分支 HEAD,这意味着这些分支在 DAG 中是逻辑转发的。这可用于列出包含给定提交的分支(例如错误修复)。


git branch -a --no-merged HEAD

将列出所有尚未包含HEAD. 这可用于列出可能包含仍然缺少的代码的分支HEAD


git branch -a --no-contains HEAD

列出所有尚未包含commit的分支 HEAD。这可用于列出缺少给定提交的分支(例如错误修复)。


(如果您只对本地分支感兴趣,请删除-a示例命令中的标志。如果您只对远程分支感兴趣,请将标志替换-a-r。标志-a表示所有分支,-r表示远程分支。)


推荐阅读