GitLab - 'pre-receive hook declined' 에러 해결

Gitlab에서 Repository를 만들고 코드를 push 하려고 하는데, pre-receive hook declined 에러가 발생하면서 push가 실패했습니다.

$ git push -uf origin main
...
remote: GitLab: You are not allowed to force push code to a protected branch on this project.
To https://gitlab.com/xxx/xxxx.git
 ! [remote rejected] main -> main (pre-receive hook declined)
error: failed to push some refs to 'https://gitlab.com/xxx/xxxx.git'

구글링을 해보니 Protected branches의 정책으로, Git Repository를 생성할 때 기본적으로 Maintainer에게만 push 권한이 부여되고 Developer에게는 권한이 부여되지 않는 것 같습니다. Settings에서 권한 재설정으로 push가 되도록 문제를 해결할 수 있습니다.

해결 방법

브랜치 생성 시 main 브랜치가 Protected branches로 설정되어 Developer는 push를 할 수 없었습니다.

중요도에 따라서 Maintainer가 처리하거나, Developer가 직접 할 수 있도록 권한 설정을 할 수 있습니다. 저는 혼자 사용하는 git이기 때문에 Protected branch를 사용하지 않도록 변경하였습니다.

GitLab의 Project에서 Settings -> Protected branches로 들어가시면 다음과 같이 권한을 변경하거나 사용하지 않도록 변경할 수 있습니다.

gitlab - how to unprotect protected branches

위와 같이 Unprotected 브랜치로 변경 후, 다시 push를 해보니 성공하였습니다.

$ git push -uf origin main
Enumerating objects: 89, done.
Counting objects: 100% (89/89), done.
Delta compression using up to 8 threads
Compressing objects: 100% (85/85), done.
Writing objects: 100% (89/89), 5.90 MiB | 3.87 MiB/s, done.
Total 89 (delta 23), reused 0 (delta 0), pack-reused 0
To https://gitlab.com/xxx/xxxx.git
 + 57be214...9f1fe50 main -> main (forced update)
Branch 'main' set up to track remote branch 'main' from 'origin'.

References

Loading script...

Related Posts

codechachaCopyright ©2019 codechacha