我在项目中拥有开发者权限时,推送代码到Git时遇到了问题,但当我拥有主管理员权限时一切正常。问题出在哪里?如何解决?
错误信息:
错误:您不被允许向此项目的受保护分支推送代码。
...
错误:无法将某些引用推送到 ...
我在项目中拥有开发者权限时,推送代码到Git时遇到了问题,但当我拥有主管理员权限时一切正常。问题出在哪里?如何解决?
错误信息:
错误:您不被允许向此项目的受保护分支推送代码。
...
错误:无法将某些引用推送到 ...
没有问题 - 一切都按预期工作。
在GitLab中,有些分支可以受到保护。默认情况下,只有维护者/所有者用户才能提交到受保护的分支(参见权限文档)。master
分支是默认受保护的 - 它会强制开发人员发起合并请求,由项目维护者验证后再将其集成到主代码中。
您可以在项目设置中打开和关闭选定分支的保护(具体位置取决于GitLab版本 - 请参见下面的说明)。
在同一设置页面上,您还可以允许开发人员向受保护的分支推送。打开此设置后,保护将仅限于拒绝需要 git push --force
(rebase等)的操作。
进入项目:"设置"→"存储库"→"展开" "受保护的分支"
我不确定这个更改是何时引入的,截图来自10.3版本。master
的推送,强制所有更改通过合并请求进行)。或者,您可以点击“取消保护”以完全删除分支的保护。项目:"设置" → "受保护的分支"(如果您是给定项目的至少 'Master')。
然后点击“取消保护”或“开发人员可推送”:针对GitLab企业版9.3.0版本
默认情况下,主分支是受保护的,可以取消保护 :)
1-选择您的“项目”
2-选择“存储库”
3-选择“分支”
4-选择“项目设置”
5-在“受保护的分支”中点击“展开”
6-然后点击“取消保护”按钮
备选方案,使用 GitLab 13.11(2021年4月)
在 Git 仓库中,防止进行 force push
是最佳实践,但特殊情况偶尔可能需要。
为了进行 force push
,暂时移除分支保护可能并不总是理想的选择,因为这需要维护者权限,并且会导致分支保护设置丢失。
GitLab 13.11 引入了新的允许强制推送设置,用于保护分支,该设置允许Allowed to push列表中的用户进行强制推送。
在之前的GitLab版本中,当默认分支被完全保护时,只有项目维护人员和所有者才能向默认分支推送初始提交。
这给开发者们带来了麻烦,因为他们创建了一个新项目,但无法将初始提交推送到其中,因为只有默认分支存在。
通过初始推送后完全保护设置,开发者可以将初始提交推送到存储库的默认分支,但之后不能再推送任何提交到默认分支。类似于分支完全保护时的情况,项目维护人员始终可以向默认分支推送,但没有人可以强制推送。
remote: You are not allowed to push code to this project.
和The requested URL returned error: 403
请尝试设置Git用户,在推送代码之前提示用户名,您可以使用以下命令:$ git config --local credential.helper ""
输入用户名和密码并成功登录后
$ git push
在Windows凭据中,我找到了两个旧账户的GitLab条目。我将它们都删除后,现在它可以工作了!我打开“控制面板 => 用户帐户 => 管理您的凭据 => Windows 凭据”,我发现有两个关于https://@github.com的 GitLab 条目,其中一个是错误的用户。我删除了它,在下一次“git push”时我被提示提供正确的凭据,然后它就可以工作了!还有一些注意事项-这可能发生在任何git远程上。
这被视为Gitlab的特性。
维护者/所有者
访问权限无法对默认和受保护的分支进行强制推送,如文档中所述。
https://docs.gitlab.com/ee/user/project/protected_branches.html
使项目对于维护者或开发者而言成为不受保护的,以便您进行提交。我在本地的GitLab服务器上遇到了这个"空分支"错误。一些人提到"你不能在一个空分支上第一次推送"。我试图通过浏览器在GitLab上创建一个简单的README文件,然后一切都神奇地解决了!我提到,我是主分支且该分支没有受到保护。
对我来说,创建个人访问令牌时,选择 开发人员
而不是 维护者
职位是一个问题。
选择 维护者
解决了这个问题。