在没有 PR 的情况下重新设置受保护的分支

Rebase the protected branch without PR

我有 masterhotfix_master 分支。这些是发布分支,在项目设置下的 Gitlab UI 中受到保护。

我想要实现的是,在从 master 发生的每个产品发布后重新设置 hotfix_master 分支,这样如果客户提出任何错误,我们可以修复该错误 hotfix_master 分支并发布给客户。

在进行概念验证时,我意识到即使 hotfix_master 分支受到保护,我仍然可以在不创建任何 PR 的情况下变基。这是预期的吗?如果是,保护的用途是什么?以及只有在创建 PR 后才允许 rebase 应该怎么做?

编辑 1

这就是我正在做的

    - git fetch
    - git checkout hotfix_master
    - git diff --name-only origin/hotfix_master...origin/master
    - git rebase origin/master
    - git status
    - git push

变基后,我看到的是 master 的所有更改现在都在 hotfix_master 上。那么,公关的问题在哪里?为什么 gitlab 不抱怨你没有提高 PR 。请推荐

编辑 2

"Branch protection" 是 GitLab 和 GitHub 的一个特性。它保护共享存储库中的分支免于被强制推送,从而可能丢失历史记录。

当您拥有本地克隆时,您可以对您的本地 分支做任何您喜欢的事情(创建它们、重置它们、合并它们、变基它们、创建提交等。 ),但你只能在“受保护的分支”上执行快进推送。

在此设置中,如果 hotfix_master 有 master 没有的提交,推送(EDIT 1 中的最后一个命令)应该会因为分支保护而失败。

如果您想要拒绝正常推送(不允许更改历史记录),您必须将保护设置(编辑 2)“允许推送”更改为一个更高的层次,拒绝任何不应该做你在 编辑 1.

中展示的人

除此之外:假设 master 是当前正在生产的代码,您通常会将 master 合并到其他分支以保留分支之间的提交历史记录。