Reputation: 6327
I have a problem when I push my code to git while I have developer access in my project, but everything is okay when I have master access. Where is the problem come from? And how to fix it?
Error message:
error: You are not allowed to push code to protected branches on this project.
...
error: failed to push some refs to ...
Upvotes: 629
Views: 868663
Reputation: 71
Enabling force Push works for me too.
16.2 does not *upport Push, so this works for me too:
Upvotes: 7
Reputation: 506
Solution: Rename your branch
I encountered this error when I was trying to push my own new branch so I was surprised. It seemed it was seeing the branch as protected. It turns out that the name pattern my branch started with had the same pattern as the protected "main" branch for the sprint. So I'm guessing there's some form of regex protecting all branches that start that way. Hence all subsequent sprint branches of that pattern gets protected.
sprint branches: abc_2023_1
, abc_2023_2
, abc_2023_3
my initial branch name: abc_2023_3_launch_that_awesome_rocket
my renamed branch name: launch_that_awesome_rocket
Was asking myself how is it that I've made countless branches and never started them this way except this one. Why did I do that...lol.(I checked out to a new branch via intelliJ and continued with the prefilled name instead of clearing it😬)
Thanks to my teammate who pointed the pattern thing out.
Upvotes: 1
Reputation: 651
In my case the above one works but just to clarify the steps with little more details so I just followed the below steps to remove the above error and push my code
Step-1: Go to your project settings
Step-2: Then click on repository
Step-3: Go to protected branches, expand and enable Allowed to force push as mentioned in below screenshot
Here successfullly pushed my code without any issue
Upvotes: 11
Reputation: 1323045
Alternative solution, with GitLab 13.11 (April 2021)
Force push option for protected branches
It’s best practice to prevent
force push
on Git repos, but exceptional cases may occasionally require it.Temporarily removing branch protections in order to conduct a
force push
may not always be ideal as it requires maintainer access, and causes the settings for branch protection to be lost.GitLab 13.11 introduces a new Allow force push setting for protected branches, which enables users in the Allowed to push list to force push.
See Documentation and Issue.
Also, GitLab 16.2 (July 2023) adds:
Allow initial push to protected branches
In previous versions of GitLab, when a default branch was fully protected, only project maintainers and owners could push an initial commit to a default branch.
This caused problems for developers who created a new project, but couldn’t push an initial commit to it because only the default branch existed.
With the Fully protected after initial push setting, developers can push the initial commit to the default branch of a repository, but cannot push any commits to the default branch afterward. Similar to when a branch is fully protected, project maintainers can always push to the default branch but no one can force push.
See Documentation and Issue.
Upvotes: 23
Reputation: 9623
When you have error message remote: You are not allowed to push code to this project.
and The requested URL returned error: 403
Try setting the git user,
To prompt username before pushing the Code, use
$ git config --local credential.helper ""
After entering Username and Password and successful login
$ git push
Upvotes: 6
Reputation: 783
For me the problem was the user trying to push simply was not invited to the project. I had to go to Project Information > Members and invite the member as a developer so they had access to push.
Upvotes: 0
Reputation: 306
I encountered a similar issue. However, the problem was that the repository was accidentally archived! You can check by going to the repository (in Gitlab at least) and it showed the following message "Archived project! Repository and other project resources are read-only." In order to push to it, we had to unarchive it.
Upvotes: 0
Reputation: 117
To the settings after opening the branch in git. Then allow force push.
Upvotes: 8
Reputation: 689
For me, it was an issue of choosing Developer
rather than Maintainer
position while creating a personal access token.
Choosing Maintainer
solved the situation.
Upvotes: 3
Reputation: 1268
This is considered as features in Gitlab.
Maintainer / Owner
access is never able to force push again for default & protected branch, as stated in this docs
Upvotes: 4
Reputation: 23511
I was on Windows when this problem appeared.
The error is strange because it happens before I could enter my username and my password. What if there was a cache or something like this? I dig it online and found this answer on gitlab's support forum:
I open "Control Panel => User Accounts => Manage your credentials => Windows Credentials" I found two for https://@github.com and one was the wrong user. I deleted it and on the next "git push" I was reprompted and provided the correct credentials and it worked! Some other notes - this could have happened with any git remote.
In the Windows Credentials, I found two GitLab entries for an old account. I remove both and now it works!
The panel:
Upvotes: 4
Reputation: 1209
Simple solution for this problem to have quick chat with person who has owner role in gitlab. He can push one file READ.md or similar to just start with. Later, everything will be working as earlier.
Upvotes: 1
Reputation: 12178
there's no problem - everything works as expected.
In GitLab some branches can be protected. By default only Maintainer/Owner users can commit to protected branches (see permissions docs). master
branch is protected by default - it forces developers to issue merge requests to be validated by project maintainers before integrating them into main code.
You can turn on and off protection on selected branches in Project Settings (where exactly depends on GitLab version - see instructions below).
On the same settings page you can also allow developers to push into the protected branches. With this setting on, protection will be limited to rejecting operations requiring git push --force
(rebase etc.)
Go to project: "Settings" → "Repository" → "Expand" on "Protected branches"
I'm not really sure when this change was introduced, screenshots are from 10.3 version.
Now you can select who is allowed to merge or push into selected branches (for example: you can turn off pushes to master
at all, forcing all changes to branch to be made via Merge Requests). Or you can click "Unprotect" to completely remove protection from branch.
Similarly to GitLab 9.3, but no need to click "Expand" - everything is already expanded:
Go to project: "Settings" → "Repository" → scroll down to "Protected branches".
Project: "Settings" → "Protected branches" (if you are at least 'Master' of given project).
Then click on "Unprotect" or "Developers can push":
Upvotes: 948
Reputation: 169
Try making changes as per link
https://docs.gitlab.com/ee/user/project/protected_branches.html
make the project unprotected for maintainer or developer for you to commit
Upvotes: 2
Reputation: 10048
The above solutions explain clearly what the problem is; when you don't have control over the repo, the best way to submit your code is to create a Fork of the original repo and submit your code to this new repo so later you can push it to the original one.
Upvotes: 0
Reputation: 388
I experienced the same problem on my repository. I'm the master of the repository, but I had such an error.
I've unprotected my project and then re-protected again, and the error is gone.
We had upgraded the gitlab version between my previous push and the problematic one. I suppose that this upgrade has created the bug.
Upvotes: 1
Reputation: 458
I have encountered this error on "an empty branch" on my local gitlab server. Some people mentioned that "you can not push for the first time on an empty branch". I tried to create a simple README file on the gitlab via my browser. Then everything fixed amazingly and the problem sorted out!! I mention that I was the master and the branch was not protected.
Upvotes: 3
Reputation: 1487
for the GitLab Enterprise Edition 9.3.0
By default, master branch is protected so unprotect :)
1-Select you "project"
2-Select "Repository"
3-Select "branches"
4-Select "Project Settings"
5-In "Protected Branches" click to "expand"
6-and after click in "unprotect" button
Upvotes: 61