在GitHub上,是否有一种方法可以禁用某些分支的压缩并合并功能?

25

我想找一个工具,可以帮助禁用某些分支的 squash 和 merge,但不是所有分支。

Github 设置允许我禁用 squash 和 merge,但它适用于所有分支,而受保护的分支区域没有限制合并选项的选项。

谢谢!


1
你能找到解决方案吗,@paxcow? - SatheeshJM
你的使用场景是什么? - knittl
2
@knittl 不是楼主,但我的用例是:将“staging”作为默认分支,“main”作为发布分支 - 希望将功能分支压缩合并到staging中,并且只能通过合并提交将staging合并到main。有什么想法吗? - Kyle Chadha
@KyleChadha 我会重复我已经在下面作为答案发布的相同答案:在 GitHub 上不可能实现,至少我不知道有任何这样的功能。你可以创建一个功能请求,他们可能会实现它。 - knittl
我们的发布流程也存在同样的问题:一个名为release-*的发布分支有一个带有类似0.84.0的标签的提交,我们希望在合并后该标签仍然存在。这需要保留提交记录。然而,特性分支通常会被压缩成一个提交,这是我们的默认设置。 - Martin Jambon
GitHub 可能的改进之一是在我们将要压缩或变基带有标签的分支时警告我们(尽管变基可以智能地移动标签)。 - Martin Jambon
3个回答

9
不,据我所知,在GitHub上不可能实现这一点。您可以为其创建一个功能请求,他们可能会进行实现。

2
有一个功能请求 https://github.com/github/feedback/discussions/10809 请点赞以便它得到更多关注。 - SatheeshJM

3
我一直在开发一个解决这个问题的扩展程序。 链接到Chrome Web Store
它允许定义一组分支(使用正则表达式)来禁用“合并并压缩”按钮。

之前

enter image description here

After

enter image description here

请让我知道您是否有任何问题或反馈意见。

1
到目前为止(2023年6月),还没有明确的解决方案,如在这个GitHub线程10809中讨论的那样。
Ivan Degtiarenko提出的最新建议:
我最终创建了一个Tampermonkey脚本,允许您在指定的分支名称上禁用某些合并选项:disable-merge-options-github-branches.js。 需要您在脚本中调整分支名称和仓库。
请注意,此脚本只更改用户界面,以防止您意外点击错误的按钮。我认为仍然有可能通过API使用错误的选项进行合并。
在 "Pull request merge queue (public beta)"(2023年2月)的背景下,您还可以为合并队列指定合并类型
设置分支保护规则如下:

https://user-images.githubusercontent.com/83613150/221994741-cfc18928-90fd-47d9-8b94-511ed0ffefde.png


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