我已经在虚拟机上运行了gitlabhq rails服务器,按照本教程https://github.com/gitlabhq/gitlab-recipes/blob/master/install/centos/README.md中的1-6步执行并启动rails服务器执行命令sudo -u git -H bundle exec rails s -e production
。之后我创建了用户,使用管理工具并在此用户下创建了新项目。然后我一直试图将现有项目推送到这个仓库。但是在最后一步中,git push origin master
失败并显示错误
[远程拒绝]主人 - >主人(预先接收挂钩拒绝)
其他信息:
1)我没有通过电子邮件激活链接激活用户(项目所有者),因为我没有在服务器端配置后期服务,我在本手册中没有找到如何操作的说明。
2)Gitlab服务器生成如何将项目推送到repo的提示,并且路径中没有repositories/
。我的意思是它生成git@mygitlabhost:user/repo.git
而不是git@mygitlabhost:repositories/user/repo.git
这是正确的。
3)当我尝试调试它时,我在服务器上的repo中打开了pre-receive
脚本,并尝试输出变量(其中有3个):refs = ARGF.read
,key_id = ENV['GL_ID']
和{ {1}}并发现,key_id始终为空。也许问题就在这里......如果是这样,请给我一些如何解决这个问题的建议。感谢
答案 0 :(得分:162)
默认情况下,GitLab将master
分支标记为protected
(请参阅https://about.gitlab.com/2014/11/26/keeping-your-code-protected/中的Protecting your code
部分原因)。如果是这样,那么这可以帮助:
打开您的项目>设置[>存储库选项卡]并转到"受保护的分支机构",选择:"开发人员可以推送"然后再试一次。
通过https://gitlab.com/gitlab-com/support-forum/issues/40
对于版本8.11及更高版本操作方法:https://docs.gitlab.com/ee/user/project/protected_branches.html#restricting-push-and-merge-access-to-certain-users
答案 1 :(得分:7)
似乎问题出在某些服务上,比如sidekiq。运行sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production
会输出config的所有问题。
答案 2 :(得分:6)
在本地计算机中解决了以下问题:
一个。首先,确保使用正确的登录详细信息连接到Bitbucket Server(即用户名/密码/属于您的SSH密钥)
B中。然后,确保在本地Git配置中正确设置了名称/电子邮件地址:为您尝试推送的帐户设置本地Git配置(检查断言您是提交文件的人)
*请注意,这是区分大小写的,包括姓名和电子邮件地址
*它也是空间敏感的 - 一些公司帐户的名称中有额外的空格/字符,例如。 “Contractor/ space space(LDN)
”。您必须在配置中包含与Bitbucket Server相同数量的空格。如果卡住了,请在记事本中查看。
℃。如果您使用的是错误的帐户,只需切换您的帐户凭据(用户名/密码/ SSH密钥),然后再次尝试推送。
d。否则,如果您的本地配置不正确,则需要对其进行修改
对于MAC
open -a TextEdit.app ~/.gitconfig
注意:您必须修复您尝试推送的旧提交。
修改您的上一次提交:
> git commit --amend --reset-author
<save and quit the commit file text editor that opens, if Vim then
:wq to save and quit>
尝试重新推送您的提交:
> git push
答案 3 :(得分:5)
我已遵循heroku日志img https://devcenter.heroku.com/articles/buildpacks#detection-failure的说明(使用cmd:heroku日志->显示您的错误) 然后执行cmd:“ heroku buildpacks:clear”。终于对我有用了!
答案 4 :(得分:3)
在我的情况下,我的团队导致创建了一个存储库(存储库为空),并将我分配为开发人员,因此当我直接推送到代码以掌握错误时,我遇到了{{1} }因此,他以 maintainer 的身份分配给我的方式是固定的,因此我能够将代码直接推送给master。
答案 5 :(得分:2)
您可能没有开发人员访问项目或主分支。您需要dev访问权限来推动新工作。
新工作意味着新的分支和提交。
答案 6 :(得分:1)
可能不是这样,但这是我的“预接收挂钩拒绝”错误的解决方案:
有些存储库只允许通过拉取请求进行修改。这意味着您必须
答案 7 :(得分:1)
这是因为 Master 分支受到保护,以下是清除此错误的步骤。
git checkout -b new-branch-name
git push --set-upstream origin new-branch-name
git reset --soft HEAD~1
git pull
答案 8 :(得分:0)
我通过将remote 'origin' url
中的http
从git
更改为.git/config
协议来解决了这个问题
答案 9 :(得分:0)
转到项目设置->挂钩->(在下面)预接收挂钩
禁用 cp要求在提交中引用问题
答案 10 :(得分:0)
To use npm to install your application's dependencies please delete the yarn.lock file.
To use yarn to install your application's dependences please delete the package-lock.json file.
答案 11 :(得分:0)
我偶然发现了使用BitBucket的同一错误。我有一个本地Git存储库,想在线备份,所以我用BitBucket帐户(使用Web界面)创建了一个新的存储库。
运行git remote add origin git@bitbucket.org:StatMarianne/<a private repo>.git
之后,我git push origin master
毫无用处(我通常不对git push
使用 -u 选项,因为我没有推入和拉入时,请记住输入完整的repo和分支名称。
错误显示:
remote: You're not allowed to write to this repository.
To bitbucket.org:StatMarianne/<a private repo>.git
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git@bitbucket.org:StatMarianne/<a private repo>.git'
但是当我运行git push -u origin master
时(严格按照BitBucket的说明),我的本地分支确实得到了成功推送。
我感到很惊讶,因为 -u (--set-upstream
)仅应“添加上游(跟踪)参考...”。
答案 12 :(得分:0)
尽管该问题特定于gitlab,但在github上可能会发生类似的错误,具体取决于它的设置方式(通常是 Github Enterprise )。
您需要熟悉以下概念:
Webhooks 比其他两项更容易理解。
预接收挂钩
是在GitHub Enterprise服务器上运行的脚本 执行政策。进行推送时,每个脚本都会在 isolated environment 确定是否接受推送。
组织网络钩子:
Webhook事件也从您的存储库发送到“组织webhooks”。 more info。
这些是在您的github企业中设置的。它们特定于 github企业版的版本。 由于访问限制(开发人员,维护人员,管理员等),您可能没有可见性。
答案 13 :(得分:0)
请检查“开发中”中JIRA的状态。 对我来说,不是,当我将jira的身份更改为“开发中”时,它对我有用。
答案 14 :(得分:0)
请尝试:
git push -u origin master
如果仍然无法推送成功,请创建一个新分支或选择另一个分支并推送到新分支
答案 15 :(得分:-1)
我也遇到过同样的问题,这是因为我直接在master分支中推送了我的代码,而我对此没有任何权利。因此,我将代码推送到一个新的分支中,然后,我创建了一个与master合并的拉取请求。