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


325

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

错误信息:

错误:不允许将代码推送到该项目上受保护的分支。
...
错误:无法将某些参照推送到...


Hcorg的答案是一个很好的解决方案。还有另一个问题。如果项目刚刚创建并且还没有分支。如果单击“受保护的分支”,它将重定向到项目主页。创建分支将起作用。
pdwjun

另请参阅带有GitLab 13.0(2020年5月)的stackoverflow.com/a/61964599/6309,您可以在其中启用组级默认分支保护。
VonC

Answers:


505

没问题-一切都按预期进行。

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

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

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

自GitLab 9.3起

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

在此处输入图片说明

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

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

自GitLab 9.0起

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

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

在此处输入图片说明

GitLab 9.0之前的版本

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

设置→受保护的分支

然后单击“取消保护”或“开发人员可以推送”:

在此处输入图片说明


不要忘记可能需要一些权限。如docs.gitlab.com/ee/user/project/protected_branches.html中所述,至少为“主权限级别”。在我的情况下,按设定转盘仅显示“离开项目”选项。
CoolMind

1
由于某种原因,我突然不得不将自己添加为自己项目的主用户。
jgillich

3
我遇到了这个问题,因为我还不是我的OWN项目的成员,并且我已经推动了该项目...要对其进行更改,请在游览项目中单击齿轮,成员,搜索您的用户,为其指定一个角色,然后单击“添加用户进行投射”。
Loenix

我也很奇怪,我必须将自己纳入gitlab.com上的个人项目
Thomas Decaux

1
如果您是唯一的维护者或开发者,那就很好了,因此您可以更改设置并进行尝试。但是,如果有一个团队在回购上工作,那么更改回购保护就不是一个好习惯。
Mnemo

26

适用于GitLab企业版9.3.0

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

1-选择您的“项目”

2-选择“存储库”

3-选择“分支机构”

4-选择“项目设置”

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

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


我没有“分支”,因为我尚未在此存储库上创建任何文件。我创建了Readme.md并出现了分支。
伊科姆

1

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


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


1

与gitlab中拥有所有者角色的人进行快速聊天的简单解决方案。他可以将一个文件READ.md或类似文件推入其中。以后,一切都会像以前那样工作。


如果可能,请尝试获取存储库中的所有者角色。拥有所有者角色后,您可以直接提交给主角色。不创建不必要的新项目很烦人,但却是预防性的钩子,直到repo的所有者推送第一个文件或您拥有所有者角色之后,才可以破解。希望这可以帮助。
克里斯(Kris)

1

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

该错误很奇怪,因为它发生在我无法输入用户名和密码之前。如果有缓存或类似的东西怎么办?我在网上对其进行了挖掘,并在gitlab的支持论坛上找到了以下答案

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

在Windows凭据中,我找到了一个旧帐户的两个GitLab条目。我都删除了,现在可以使用了!

面板:

在此处输入图片说明


@YanickSenn不客气。我在这个上浪费了很多时间。很高兴能帮到您。
aloisdg移至codidact.com

1

这被视为Gitlab中的功能。

Maintainer / Owner访问是永远无法再在默认情况下与保护的分支力推,在陈述该文档 在此处输入图片说明


1
实际上,这根本不是不幸的。这绝对是一件好事。这是额外的保护层。
Chiramisu

0

我在存储库中遇到了同样的问题。我是存储库的管理员,但是出现了这样的错误。

我取消了对我的项目的保护,然后再次对其进行了保护,该错误消失了。

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


0

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.