尝试将现有 git 项目上传到 gitlab 时如何解决“预接收挂钩被拒绝”错误?

Posted

技术标签:

【中文标题】尝试将现有 git 项目上传到 gitlab 时如何解决“预接收挂钩被拒绝”错误?【英文标题】:How to fix the "pre-receive hook declined" error when trying to upload an existing git project to gitlab? 【发布时间】:2022-01-01 12:06:59 【问题描述】:

我们的项目由另一家外部公司开发并托管在他们各自的 gitlab 帐户中。

现在他们已将源代码传递给我们,我们想将其上传到我们的 gitlab 帐户。 为此,我们在 gitlab 中创建了一个私有存储库。 这个仓库只有管理员用户,是空的。

但是,在执行git push origin master 时,会出现以下错误:

[remote rejected] master -> master (pre-receive hook declined)
error: some references to 'gitlab.com:sanduzelai/xxx.git' failed to push

我们如何解决这个错误?

我在 *** 上读过类似的问题,但没有得到它的工作。 我尝试从 master 创建一个分支并执行 git push 但它没有奏效。 如果我删除 .git 文件夹并使用 git init 命令创建它,则存储库已成功上传到 gitlab。 但是,我想保留日志。这可能吗?

提前致谢

【问题讨论】:

master 很可能受到保护,并且不允许用户推送。您可以取消保护 master 或授予用户“允许推送”权限或通过合并请求更新 master。 我一开始也是这么想的。在新的 gitlab 帐户中,只有我的用户(我已经创建了它)。我明白我必须拥有所有许可证。我从 master 创建了一个分支来尝试用它上传存储库。问题可能出自外部公司的用户,他们之前已经提交过并且没有权限? 您的 GitLab 项目(或自我管理的实例)是否有推送规则,要求匹配提交者电子邮件或验证/签名提交? 【参考方案1】:

您可能会考虑外部公司是否会将项目“转移”给您,而不是像正在执行的操作那样下载/上传,因为这不仅会保留存储库历史记录,还会保留项目中的任何未解决问题。如果他们(或您)运行自托管的 gitlab,您还可以导出和导入项目以获得相同的方法。

话虽如此,有多种因素会导致此类问题,但这里有几个示例:

如果您运行的是自托管 gitlab,则可能有服务器端 git 挂钩阻止提交。 如果您在 gitlab.com 上运行,您可能启用了强制使用特定电子邮件推送提交的规则,或者您可能需要 GPG 对提交进行签名

您可能应该向您的 gitlab 管理员发送一条注释,并确定您的设置是什么,以及什么可能阻止提交。

【讨论】:

以上是关于尝试将现有 git 项目上传到 gitlab 时如何解决“预接收挂钩被拒绝”错误?的主要内容,如果未能解决你的问题,请参考以下文章

如何修改gitlab上项目的远程地址

无法将现有项目克隆或推送到gitlab

使用Eclipse将项目上传至远程GitLab

将项目上传到gitlab,创建组,拉成员

Git+本地项目上传至gitlab

windows10使用git上传项目到gitlab