繁体   English   中英

尝试推送时出现 Git 错误 -- 预接收挂钩被拒绝

[英]Git error when trying to push -- pre-receive hook declined

当我尝试推送我提交的更改时,出现以下错误...

git.exe push -v --progress  "origin" iteration1:iteration1

remote: *********************************************************************
To ssh://git@mycogit/cit_pplus.git
! [remote rejected] iteration1 -> iteration1 (pre-receive hook declined)
error: failed to push some refs to 'ssh://git@mycogit/cit_pplus.git'

这是怎么回事?

您应该在git@mycogit/cit_pplus.git询问维护仓库的人。

您的提交被该 repo 的pre-receive钩子拒绝(这是一个用户可配置的脚本,旨在分析传入的提交并确定它们是否足以被 repo 接受)。

要求那个人更新钩子也是一个好主意,这样它就会打印拒绝的原因。

如果维护者是您自己,那么看起来您在服务器端的设置存在问题。 那么请分享更多信息。

我敢打赌,您正在尝试非快进推动,而钩子会阻止它。 如果是这种情况,只需在推送之前运行git pull --rebase即可将本地更改重新设置在最新的代码库上。

文件大小很重要。 单个文件的限制为 ~120MB。 就我而言,使用 Visual Studio 的 .gitignore 列出了该文件,但该文件仍被提交。 使用 git cli 时,我们可以获得有关错误的更多详细信息。

pre-receive hook 被拒绝是由于大文件。 基本上验证推送。

为了解决它,我使用以下方法删除了最后一次提交:

git reset --soft HEAD~1

然后我从提交中排除了该文件。

注意:使用 HEAD~N 返回 N 次之前的提交。 (即 3、4)始终使用 --soft 开关来维护文件夹中的更改

希望能帮助到你。

就我而言,我收到此消息是因为该分支在 GitLab 中被标记为“受保护”。

这可能是因为您没有将提交推送到master等分支的访问权限。 您可以要求维护者授予您推送提交的权利。

有时候,因为你推送的分支已经被保护了,所以你可以要求仓库的维护者改变保护状态。 在 git-lab 中,您可以在

Settings > Repository > Protected Branches .

:)

在我的情况下(Bitbucket),问题是Rewriting branch history is not allowed 转到Repository settings -> Branch Permissions编辑所选分支的权限,并选中Allow rewriting branch history

允许重写分支历史

当 GitLab 服务器进行一些更改时,我收到了这条消息。 第二天推送效果很好。 无论如何,正如其他人指出的那样,请与您的维护人员确认。

我遇到了同样的问题。
为我解决的问题是切换到另一个分支,然后回到原来的分支。

不确定下划线的原因是什么,但这解决了它。

尝试合并文件大小大于远程存储库允许的更改时遇到此问题(在我的情况下是 GitHub)

如果它可以帮助某人:

我有一个空白仓库,没有要取消保护的主分支(在 Gitlab 中),所以在运行git push -u origin --all之前

  • 我必须先运行git push -u origin master
  • 暂时解除对 master 分支的保护
  • 推送其余部分( --all--tags

Bitbucket :检查设置中的分支权限(可能在“全部拒绝”上)。 如果这不起作用,只需将您的分支克隆到新的本地分支,将更改推送到远程(将创建一个新的远程分支),然后创建一个 PR。

在检查我有开发人员访问权限并且无法发布新分支时,我遇到了同样的错误。 添加更高的访问权限解决了这个问题。(Gitlab)

我在 GitHub gist 上遇到了这个错误。 我试图用子目录中的文件推送提交。 原来 gist 只能在根目录中有文件。

删除受保护的分支选项或允许其他角色(如开发人员或管理员)允许这些遇到此错误的用户进行合并和推送。

在我的例子中,我们有提交消息的钩子,我们的服务器脚本接受提交,如果它们具有提交消息的特殊格式"<JIRA ID><Message>" 如果相应的 Jira 票证不存在或提交消息中有一些特殊符号,则它(挂钩)拒绝提交。 当我在提交消息中添加 /、[、> 等时,我遇到了这个错误,删除这些工作正常。

对我来说,远程 git 服务器上的授权解决了这个问题。 在此处输入图像描述

我正在使用 GitKraken,我们创建了一个本地分支,然后我们在其中合并了两个远程分支,然后我们尝试将本地分支推送到原点。 它不适用于相同的错误消息。

解决方案创建本地分支并首先将其推送到原点,然后进行合并。

就我而言,我收到此错误是因为已经存在同名的分支。 从 git 服务器中删除此分支将解决此问题。

我通过重新生成 SSH 密钥并将其添加到 GitHub 帐户解决了这个问题。

我在尝试推送到一个 dokku 实例时得到了这个。 原来我的服务器上的磁盘已满。

冉: du -f

结果是:

Filesystem      Size  Used Avail Use% Mounted on
udev            476M     0  476M   0% /dev
tmpfs           100M  4.4M   95M   5% /run
/dev/xvda1      7.8G  7.4G  8.9M 100% /

这实际上是在 BitBucket 的服务器端启用 YACC 时发生的。 YACC 允许在提交消息中提及 JIRA 问题名称。 因此,每当您提交任何内容时,至少将您的 JIRA 编号保留在提交消息中,然后您还可以添加自己的消息。

问题:“PUSH Failed refs/head/ - pre-receive hook denied”

我遇到了无法将我的更改推送到我的原始分支以及任何特定项目存储库的主分支的问题,因为该存储库的大小超过了 2GB 的硬限制。 它正在抛出错误。 那是因为我们在不知不觉中将测试数据从其他测试分支推送到了 bitbucket。

PUSH Failed refs/head/ - pre-receive hook 被拒绝

因此尝试检查其他项目回购是否相同,并且他们没有任何问题。

使固定:

我的同事注意到,当我们将项目克隆回本地时,项目的大小为 110MB。 因此,我们开始清理我们之前合并的分支和不再需要的活动分支。 一旦对几个分支进行了清理,我们就意识到 repo 的大小从 2GB 急剧下降到 120MB。 然后我们尝试将更改推送到我的分支并且它起作用了。

对我来说,错误是该项目没有创建任何分支,而我的角色是开发人员,所以我无法创建任何分支,请求他们给我相关的权限,并且现在一切都井井有条!

您的遥控器尚不存在默认分支(例如master )。 所以你首先需要在 git 远程服务器中创建master分支(例如创建一个默认的README.md文件)然后尝试使用这个命令push所有现有的本地分支:

git push -u origin --all

在我的情况下,我有一个新的存储库,推送了一个分支('UCA-46',而不是'master'),重新定位它,再次强制推送并得到错误。 不存在网络挂钩。 我按照@ThiefMaster的建议执行了git pull --rebase ,不得不再次变基并且能够推送分支。 但这是一种奇怪而困难的方式。

然后我看到Git push error pre-receive hook denied 我发现我的分支被保护了。 我移除了保护,可以再次强行推动。

在此处输入图像描述

我在尝试删除远程分支时收到此消息(git push origin --delete [branch-name])。 问题是分支在 bitbucket 中被标记为不可删除。

您的提交与存储库维护者的规则不兼容,您只需要git reset --hard HEAD ~ 1即可删除最后一次提交。 之后根据维护者的规则进行承诺就可以了

就我而言,Gitlab 上的一个项目中存在 Committer 限制:

用户只能将使用他们自己的已验证电子邮件之一提交的提交推送到此存储库。

由于我还在我的机器上配置了 SSH,因此我的 global_user_email 在 git 配置文件中使用我的机器地址进行了更新,因此远程不允许推送。

您可以在以下位置找到它:

  • Gitlab -> 设置 -> 存储库 -> 推送规则

只需禁用提交限制,它就会起作用。

这是一个相当古老的问题,并且已经有很多答案。 但我想分享在使用 bitbucket 时对我有用的解决方案(无管理员权限)。 我的大多数同事(除了一个)没有遇到任何问题。 我们俩突然无法再推到精确的分支(我无法弄清楚实际原因)。 解决方案是:

  1. 删除与有问题的分支相关的现有拉取请求,
  2. 删除服务器端的分支,
  3. 从本地重新推送到远程仓库,并且,
  4. 再次创建拉取请求。

我有一个类似的问题,它是由 bcrypt npm 包引起的。 我卸载了 bcrypt,而是安装了 bcryptjs。

npm install --save bcryptjs && npm uninstall --save bcrypt

这是完全相同的 API。 app.js 中的所有代码都保持不变,除了 require 调用需要更改为require("bcryptjs");

我得到了同样的错误! [remote rejected] ... (pre-receive hook declined) ! [remote rejected] ... (pre-receive hook declined)今天。

它是由Bitbucket 有问题引起的。 因此,请确保您的 Git Remote 已启动并正在运行。

阻止我推动的问题是: https ://bitbucket.status.atlassian.com/incidents/r8kyb5w606g5

如果在公司 gitlab/github 中,您尝试将更改推送到分支/master,则 Pre-hook 可能意味着您错过了提交消息中的一些参数输入。

在我的情况下,我需要在提交文件中添加错误 ID、错误 url 和批准者,然后推送到分支并放置合并请求。

希望这会有所帮助,就像在编写提交消息时向您的导师/伙伴询问提交消息中的要求一样。

简单快速的修复:-

git commit -m "branch_name:添加的 git 脚本"

[remote denied] master -> master (pre-receive hook denied)

我在这个错误上花了 2 天时间! 经过大量研究,我终于找到了解决方案。

  1. Heroku config:set USE_NPM_INSTALL=false
  2. 在 Heroku 上配置 yarn build pack
  3. 确保yarn.lock文件不在您的.gitignore文件中

它会起作用的!

就我而言,我自己管理该项目,但最近将其升级为爱好者级别。 无论如何,通过 herokus 浏览器界面检查日志,它有一条非常明确的消息,表明 package.json 中没有定义节点版本(它是一个快速应用程序)。 他们有一个指向 Heroku 页面的链接,该页面概述了如何修复它并且它有效。

无论如何,我只是将它添加到我的 package.json 中,没有其他问题!

  "engines": {
    "node": "16.x",
    "npm": "6.x"
  },

为了清楚起见,我首先检查了我的节点版本和 npm 版本。 我的节点版本是 16,但我的 npm 版本是 7。我决定将 np​​m 定义为 6.x,只是因为它是 heroku 页面上列出的内容。 没有遇到任何问题。

$ node --version

$ npm --version

这是heroku帮助页面的链接。

https://devcenter.heroku.com/articles/nodejs-support#specifying-a-node-js-version

我的问题是文件大小,试图将项目从 gitlab 迁移到 github,并且错误确实提示了我,指向此页面https://docs.github.com/en/repositories/working-with-files/管理大文件/在您的存储库中移动文件到 git-large-file-storage

使用的命令是:

git lfs migrate import --everything --above=100kb

在此之后,我能够git push --mirror http:...

步骤1:

git pull --rebase

第2步:

git reset --soft HEAD~1

第三步:

git commit -m "your comments here"

第4步:

git push

这应该可以解决您的问题。

就我而言,这是 BITBUCKET 中项目设置下的 jira 问题集成。 顺便说一下,我们需要将 jira 问题与之相关联。 我有两个选择 1) 在提交中禁用 jira 问题 2) 将 jira 问题引用放到提交中。

就我而言,这是因为我不小心将一个巨大的文件添加到了我未提交的推送中,并且无论我之后做什么 pull 或 reset 或 rm ,我都无法摆脱它。

我的肮脏解决方案但可行的解决方案是重命名当前目录,将目录重新克隆到本地并将更改手动反映到重新克隆的本地目录...

这听起来不太好,但工作...

对我来说,一切都很好,直到今天(2020 年 4 月 21 日)Bitbucket 自动更改了他们的政策。 这恰好与今天最近推出的名为Workspaces的新功能保持一致,所以我怀疑它与此有关。

解决方法:我(作为管理员)按照说明将电子邮件地址添加到 UI 中的用户(您使用的电子邮件可以在git config --list中找到

在此处输入图像描述

我有权限问题,在获得正确的权限后,我能够推送内容。 我正在将现有项目推送到新的 git 存储库中。

你应该看看日志。 我刚刚遇到了同样的错误并从日志中意识到这是因为我有一个 yarn.lock 和 package-lock.json

如果您在执行 Push 时遇到与 git 中的 pre-receive hook 相关的问题。 您可能有以下原因:

  1. 也许您的项目路径 app_data 中的数据库备份超出了 Github 的 100.00 MB 限制。
  2. 如果您在项目中使用的文件不超过 10.00MB 或任何文件的大小限制,请检查文件的大小。

您可以通过以下步骤解决此问题:

  1. 只需压缩这些文件并再次推送 git push -u origin develop

指定node.js版本可以解决类似的问题

{
  "name": "myapp",
  "description": "a really cool app",
  "version": "1.0.0",
  "engines": {
    "node": "10.3.0"
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM