如何在git中识别陈旧/死亡的分支?

时间:2014-03-27 14:40:56

标签: git

我维护一个git存储库,它在中央存储库上有一百个左右的分支。这些分支中的许多是为长期服务的某些目的而创建的,现在不活跃。有些分支可能因某种原因而停留(例如,它们是发布分支),但其他许多分支可能会被删除。

我想要一个脚本,它生成每个分支的报告,按上次提交活动排序,如果分支合并到我们的主线“develop”分支,还要用 * 标记该分支。

因此示例输出可能是:

origin/develop          10 minutes ago
origin/feature/X        1 day ago
origin/feature/Y    *** 35 days ago 
origin/feature/Z        70 days ago

所以我可以通过电子邮件发送Y和Z的所有者并告诉他们删除他们的分支机构。我也可以对Y说他们的分支合并开发。

我假设我可以通过在分支上找到最终提交的sha1并在其上执行“git branch --contains hashcode”来测试合并。

那里有一个可以满足我目的的剧本吗?

1 个答案:

答案 0 :(得分:0)

我不确定在一段时间内确定尚未提交的回购,但至于识别已经合并的分支,这里有一些命令......

(以下所有代码都从Steve Harman's blog post解除,请提供更多信息。)

删除已合并为master的本地分支:

(First, check out master.  Then...)
$ git branch --merged master | grep -v "\* master" | xargs -n 1 git branch -d

您可以省略master分支参数以删除已合并到当前HEAD中的本地分支:

$ git branch --merged | grep -v "\*" | xargs -n 1 git branch -d