自动删除合并到主分支的Git分支

55
我们将在Github中尝试一种工作流,在这种工作流中,每个ticket都是从master中创建的一个分支。
当ticket完成后,工作会被合并到staging中,在合并到master之前,会执行回归和集成测试。
团队负责人提出了一个问题,即合并后旧的ticket分支会开始积累。
我发现了这个脚本,并想知道它是否适用于我们的环境。我们只想删除已合并到主分支的分支。

GitHub有一个删除分支的按钮,可以删除已合并到提交分支的分支,但我猜这对你没有什么帮助。 - Fred Foo
是的,我们希望将该过程自动化。链接展示了如何使用shell完成它,但我们无法访问github shell,所以我认为没有办法进行定时任务。 - ton.yeung
所以你实际上正在寻找git钩子,更具体地说是post-merge钩子。如果是这种情况,恐怕它不会起作用。 - Octavian Helm
1
您可以安装此 GitHub 应用程序,该应用程序在 PR 合并后删除分支。https://github.com/apps/delete-merged-branch - Sebass van Boxel
6个回答

112
Github发布了一个新功能,任何具有存储库管理权限的人都可以配置分支在合并后自动删除。以下是步骤:
  1. 导航到存储库的主页,然后单击“设置”。
  2. 在“合并按钮”下,您可以选择或取消选择“自动删除分支”选项。
这个功能由Github于2019年7月31日发布。

9
文档中不清楚的是,当贡献者用户拥有的 fork 中的分支合并后,这些分支是否也会自动删除。 - Tanz87
1
@ton-yeung,请将此答案标记为已接受,因为当前已接受的答案不再正确,可能会误导。 - Karan Bansal
2
在我看来,这应该是一个用户/组织级别的设置,而不是存储库级别的设置。 - Tanz87
3
@Tanz87,我同意你的想法,但我认为基于代码库更好,因为它提供了更细粒度的控制。当然,如果还能有用户/组织级别的设置会更好。 - Karan Bansal
3
@Tanz87 @Karan_Bansal 在我看来,这应该是一个分支设置。使用案例是在将PR合并到develop之后删除,但仍然保留hotfix / *分支,以便在将其合并到master时可以轻松地将相同的分支合并到develop中。 - genkilabs

3
将以下任一内容添加到您的.gitconfig文件中,以便轻松将合并和删除分支作为一个命令的别名。
作为函数的别名:
[alias]
  ff = "!f() { git merge $1; git branch -d $1; }; f"

别名作为新的shell命令:

[alias]
  ff = !sh -c 'git merge $1 && git branch -d $1' --

他们都完成同样的事情,只是用了两种不同的方法。

3
据我所知,针对您的用例没有现成的脚本可用。您需要为此创建自己的工具。
有一个名为git-flow的工具,由Vincent Driessen创建,旨在协助开发人员遵循他在"A successful Git branching model"中描述的git工作流程。
这并不像只是在合并后删除分支那么容易,因为您永远不知道是否会遇到合并冲突。

我添加的链接是一个可直接使用的脚本,但我不认为我可以在github上使用它。 - ton.yeung
GitHub与此无关,它只是一个托管您的代码库(以及更多)的服务。 - Octavian Helm
1
Hub Flow(http://datasift.github.com/gitflow/)是从GitFlow中改编而来,非常好用。 - ton.yeung
在 GitHub 上有没有一种方法可以勾选“自动删除主分支”复选框? - soung

3

3

在合并拉取请求后,您可以让GitHub自动删除主分支:

存储库 -> 设置 -> (常规) 拉取请求 -> 选中自动删除主分支


2
据我所知,目前最好的选择是一个名为delete-merged-branch的GitHub应用程序。它可以作为现有应用程序安装轻松集成到选定的存储库中,但其源代码也可用。此应用程序将在通过PR合并后自动删除分支。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接