git reset 后开发人员无法推送到受保护的分支

Pnu*_*utz 0 git gitlab

任何人都可以解释为什么我的团队成员在提交此 git reset 命令后无法将更改推送到 master 分支(更改将使 repo 恢复几次提交):

git reset --hard (previous commit SHA)
Run Code Online (Sandbox Code Playgroud)

这是尝试 git push 后收到的错误:

 ! [rejected]            master -> master (non-fast-forward)
error: failed to push some refs to 'git@xxxxx.com:xxx/xxxx.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
Run Code Online (Sandbox Code Playgroud)

分支 master 受到保护,因此只有“开发人员 + 维护人员”可以推送到它。

我的队友是有问题的 Gitlab 组的成员,拥有“开发人员”权限,之前推送到远程仓库没有问题。我有维护者权限,也无法推送到受保护的分支并收到相同的错误。

为了解决这个问题,我删除了分支保护,他能够强制推送更改(git push -f)。有谁知道为什么这个操作在受保护的分支上失败?

Alb*_*rto 18

您可以尝试允许从 github 存储库“设置”强制推送/删除

repository => settings => branches => add rules

在此输入图像描述

  • 我尝试将我的一名团队成员添加到允许强制推送的白名单中,但不知何故,他仍然无法将强制推送到受保护的分支。 (2认同)

Avi*_*evy 5

正如您所发现的,您不能强制推送到 GitLab 上的受保护分支。
来自GitLab 文档

默认情况下,受保护分支会做四件简单的事情:

  • 它可以防止任何人强行推向分支。

所以你的解决方法是这里的解决方案:unprotect-> force-push->protect

更新

GitLab 添加了新设置以启用强制推送到受保护:

  • 导航到您的项目的Settings> Repository
  • 展开Protected branches,然后滚动到Protect a branch
  • 要允许所有具有推送访问权限的用户强制推送,请切换Allow force push滑块。

GitLab 现在支持强制推送到GitLab.com上的受保护分支。
在自我管理的实例上,管理员可以选择禁用它,因此您需要与您的管理员核对。在此处
查看更多详细信息