在没有 PR 的情况下重新设置受保护的分支
Rebase the protected branch without PR
我有 master
和 hotfix_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 合并到其他分支以保留分支之间的提交历史记录。
我有 master
和 hotfix_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 合并到其他分支以保留分支之间的提交历史记录。