ChatGPT解决这个技术问题 Extra ChatGPT

修复 GitLab 错误:“您不允许将代码推送到此项目的受保护分支”?

当我在项目中有开发人员访问权限时将代码推送到 git 时遇到问题,但是当我拥有主访问权限时一切正常。问题出在哪里?以及如何解决?

错误信息:

错误:您不允许将代码推送到此项目的受保护分支。 ...错误:未能将一些参考资料推送到...

Hcorg 的回答是一个很好的解决方案。还有另一个问题。如果项目刚刚创建并且还没有分支。如果单击“受保护的分支”,它将重定向到项目主页。创建一个分支将起作用。
另请参阅 stackoverflow.com/a/61964599/6309,使用 GitLab 13.0(2020 年 5 月),您可以在其中启用组级默认分支保护。

U
Uwe Keim

没有问题 - 一切都按预期工作。

在 GitLab 中,一些分支可以受到保护。默认情况下,只有维护者/所有者用户可以提交到受保护的分支(请参阅 permissions docs)。 master 分支默认受保护 - 它强制开发人员发出合并请求以由项目维护人员验证,然后再将它们集成到主代码中。

您可以在项目设置中打开和关闭选定分支的保护(具体取决于 GitLab 版本 - 请参阅下面的说明)。

在同一设置页面上,您还可以允许开发人员推送到受保护的分支。启用此设置后,保护将仅限于拒绝需要 git push --force 的操作(变基等)

从 GitLab 9.3 开始

转到项目:“设置”→“存储库”→“受保护分支”上的“扩展”

https://i.stack.imgur.com/e82Pn.png

我不确定何时引入此更改,屏幕截图来自 10.3 版本。

现在您可以选择允许谁合并或推送到选定的分支(例如:您可以完全关闭对 master 的推送,强制通过合并请求对分支进行所有更改)。或者您可以单击“取消保护”以完全删除分支的保护。

从 GitLab 9.0 开始

与 GitLab 9.3 类似,但无需单击“展开”——所有内容都已展开:

转到项目:“设置”→“存储库”→向下滚动到“受保护的分支”。

https://i.stack.imgur.com/rr8N2.png

前 GitLab 9.0

项目:“设置”→“受保护的分支”(如果您至少是给定项目的“大师”)。

https://i.stack.imgur.com/Whjbb.jpg

然后点击“取消保护”或“开发者可以推送”:

https://i.stack.imgur.com/R5sIt.jpg


不要忘记可能需要一些权限。如docs.gitlab.com/ee/user/project/protected_branches.html中所述,至少是“主权限级别”。在我的情况下,按下设置轮仅显示“离开项目”选项。
出于某种原因,我突然不得不将自己添加为自己项目的主用户。
我遇到了这个问题,因为我不是我的 OWN 项目的成员,并且我已经推动了这个项目......要更改它,在游览项目中,单击齿轮,成员,搜索您的用户,给它一个角色,然后单击“添加用户进行项目”。
奇怪的是,我也不得不将自己包括在 gitlab.com 上的个人项目中
如果您是唯一的维护者或开发者,那就太好了,这样您就可以更改设置并尝试使用它。但是如果有一个团队在处理 repo,那么改变 repo 的保护并不是一个好的做法。
k
krekto

GitLab 企业版 9.3.0

默认情况下,master 分支是受保护的,所以取消保护 :)

1-选择你的“项目”

2-选择“存储库”

3-选择“分支”

4-选择“项目设置”

5-在“受保护的分支”中单击“展开”

6-点击“取消保护”按钮后


我没有“分支”,因为我还没有在这个存储库上创建任何文件。我创建了 Readme.md 并出现了分支。
对于路人...请不要这样做。即使您在小型组织/公司工作,也会引发严重的安全问题
V
VonC

使用 GitLab 13.11 的替代解决方案(2021 年 4 月)

受保护分支的强制推送选项 防止在 Git 存储库上强制推送是最佳实践,但在特殊情况下可能偶尔需要它。临时移除分支保护以执行强制推送可能并不总是理想的,因为它需要维护者访问权限,并导致分支保护设置丢失。 GitLab 13.11 为受保护的分支引入了新的允许强制推送设置,该设置允许允许推送列表中的用户强制推送。请参阅文档和问题。


a
aloisdg

出现此问题时,我在 Windows 上。

这个错误很奇怪,因为它发生在我输入用户名和密码之前。如果有缓存或类似的东西怎么办?我在网上搜索并找到了这个answer on gitlab's support forum

我打开“控制面板 => 用户帐户 => 管理您的凭据 => Windows 凭据”,我为 https://@github.com 找到了两个,一个是错误的用户。我删除了它,并在下一次“git push”中再次提示我并提供了正确的凭据,并且它起作用了!其他一些注意事项 - 这可能发生在任何 git 遥控器上。

在 Windows 凭据中,我发现两个 GitLab 条目用于一个旧帐户。我删除了两者,现在它可以工作了!

面板:

https://i.stack.imgur.com/DtqSt.png


@YanickSenn 欢迎您。我在这件事上浪费了很多时间。很高兴它有帮助。
V
Vahid F

我在本地 gitlab 服务器上的“空分支”上遇到了这个错误。有人提到“你不能在空的分支上第一次推送”。我试图通过浏览器在 gitlab 上创建一个简单的 README 文件。然后一切都神奇地解决了,问题也解决了!!我提到我是主人,分支没有受到保护。


这对我来说很奇怪,我认为这个问题是一个 gitlab 错误。没有权限推入一个空的仓库对我来说是不可接受的。我希望git家伙对此有答案。
B
Barath Ravichander

尝试根据链接进行更改

https://docs.gitlab.com/ee/user/project/protected_branches.html

使项目不受维护者或开发者的保护,让您提交


m
mochadwi

这被认为是 Gitlab 中的特性。

https://i.stack.imgur.com/iY3XZ.png


其实这根本不是不幸的。这绝对是一件好事。这是额外的保护层。
r
ravthiru

当您错误消息 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

S
Stephen Ostermiller

我在我的存储库中遇到了同样的问题。我是存储库的主人,但我遇到了这样的错误。

我已取消保护我的项目,然后再次重新保护,错误消失了。

在我之前的推送和有问题的推送之间,我们已经升级了 gitlab 版本。我想这次升级造成了这个错误。


k
kris

这个问题的简单解决方案是与在 gitlab 中具有所有者角色的人快速聊天。他可以推送一个文件 READ.md 或类似文件以开始。稍后,一切都会像以前一样工作。


如果可能,尝试获取存储库中的所有者角色。拥有所有者角色后,您可以直接提交给 master。不创建不需要的新项目很烦人但预防性的钩子。在 repo 的所有者推送第一个文件或您拥有所有者角色之前,没有黑客攻击。希望这可以帮助。
C
Curious Watcher

对我来说,在创建个人访问令牌时选择 Developer 而不是 Maintainer 位置是一个问题。

选择 Maintainer 解决了这种情况。


g
gogasca

上述解决方案清楚地说明了问题所在;当您无法控制 repo 时,提交代码的最佳方式是创建原始 repo 的 Fork 并将您的代码提交到这个新 repo,以便稍后您可以将其推送到原始 repo。