问题描述:推送dev分支报错 该分支受保护
$ git push
Enumerating objects: 9, done.
Counting objects: 100% (9/9), done.
Delta compression using up to 8 threads
Compressing objects: 100% (4/4), done.
Writing objects: 100% (5/5), 418 bytes | 418.00 KiB/s, done.
Total 5 (delta 3), reused 0 (delta 0), pack-reused 0
remote: GitLab: You are not allowed to push code to protected branches on this project.
To http://gitlab.xxx.com/bigdata/etl210.git
! [remote rejected] dev -> dev (pre-receive hook declined)
error: failed to push some refs to 'http://gitlab.xxx.com/bigdata/etl210.git'
问题排查:
登录gitlab可以看到此时dev为受保护分支
点击 project settings 超链接,找到Protected Branches 类目 ,可以看到如下图所示:
此时dev为保护分支,没有人被允许合并分支和推送最新到远程仓库
修改dev分支 ,使得developer和Maintainer被允许推送
测试结果如下:
$ git push
Enumerating objects: 9, done.
Counting objects: 100% (9/9), done.
Delta compression using up to 8 threads
Compressing objects: 100% (4/4), done.
Writing objects: 100% (5/5), 418 bytes | 418.00 KiB/s, done.
Total 5 (delta 3), reused 0 (delta 0), pack-reused 0
remote:
remote: To create a merge request for dev, visit:
remote: http://gitlab.xxx.com/bigdata/etl210/-/merge_requests/new?merge_request%5Bsource_branch%5D=dev
remote:
To http://gitlab.xxx.com/bigdata/etl210.git
2308609..e6b7cdb dev -> dev
推送成功!
小结:保护分支的目标主要是避免其他人随意push