【问题标题】:Lock/Unlock a github branch锁定/解锁 github 分支
【发布时间】:2022-10-21 00:31:56
【问题描述】:

我怎样才能一个 github develop 分支,这样在我之前没有人可以合并 PR(即使 PR 批准)开锁分支?这是必需的,因为我想在develop 之外创建一个release 分支并限制意外合并,直到分支出来。我通过了分支保护规则,但它不符合我的目的,即没有选项说锁定/解锁分支。

解释:我有一个develop 分支,开发人员可以从develop 分支创建功能分支并提出 PR,一旦 PR 获得审核并获得批准,开发人员可以合并他们的 PR 进行开发。现在,我想从develop 创建一个release 分支,所以我想限制所有开发人员能够将他们的PR 合并到develop 分支,即使PR 获得批准。创建release 分支可能需要几天时间,因为无论我在develop 分支中拥有什么代码,我都想测试,到这个测试时间,我想锁定develop 分支,这样就没有人可以合并了他们的 PR 进入开发分支。一旦测试成功完成,我将从develop创建一个release分支,然后我将解锁develop分支,这样,从现在开始,开发人员可以将他们的PR合并到develop分支。

【问题讨论】:

  • 为什么合并限制不能提供这种精确的解决方案?
  • 您可以在 github 中保护分支,但对本地 repos 没有影响。 Github 根本无法控制本地存储库/分支
  • 伙计们,我从来没有说过这是当地的分支机构。
  • 对不起,我读了一条评论,好像它是你的。我的错。不过,我还不清楚这个问题。
  • @han 根据您的编辑,您只需要修复您的流程。准备好开始稳定发布后立即创建发布分支,然后在发布分支中稳定。稍后,在发布分支中所做的任何稳定性更改都需要集成回下游,这样您就不会出现回归。如果您遵循 GitFlow,这是一种非常常见的模式。

标签: github


【解决方案1】:

您可以随时从任何提交创建分支,没有理由锁定活动分支并阻止人们工作。

git checkout -b <new branch name> <commit hash>,然后是 git push

【讨论】:

  • 我明白你在说什么,但对于我们的商业案例它并不适用
【解决方案2】:

git 本身不提供此功能。这可以由您用于管理存储库的任何服务器处理。见Managing a branch protection rule @ Github。您可以通过分支名称或模式设置规则,并要求 PR 合并到该分支。您还应该能够设置谁可以合并以及与分支管理相关的其他规则。

【讨论】:

  • “由您用来管理存储库的任何服务器处理”不一定。由于这不是 Git 问题,因此它完全取决于服务器及其提供的接口。
【解决方案3】:

自 2022 年 10 月起,您实际上可以锁定一个分支:

New Branch Protections: Last Pusher and Locked Branch(2022 年 10 月)

启用推送保护。

这允许锁定分支,禁止更改。
您可以锁定一个分支,允许您拥有一个维护窗口并防止更改,或者保护一个分支,使其仅接收来自其上游存储库的更改。

要在分支保护规则中使用此功能,请启用锁分支.

所以:

如何锁定 github 开发分支,以便在我解锁分支之前没有人可以合并 PR(即使 PR 批准)?

documentation 确实包括:

您也可以启用此设置以将限制应用于具有“绕过分支保护”权限的管理员和角色。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-02
    • 2016-09-19
    • 2016-05-28
    • 2015-05-14
    • 1970-01-01
    • 1970-01-01
    • 2021-12-23
    相关资源
    最近更新 更多