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

时间:2011-11-02 19:22:24

标签: git

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

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'

发生了什么事?

36 个答案:

答案 0 :(得分:81)

你应该问问谁在git@mycogit/cit_pplus.git维持回购。

您的提交被该回购邮件的pre-receive hook拒绝(这是一个用户可配置的脚本,用于分析传入的提交并确定它们是否足够好以便被接受到回购中)。

要求该人更新钩子也是一个好主意,因此它会打印出拒绝的原因。

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

答案 1 :(得分:61)

我敢打赌,你正在尝试非快进推动而钩子阻止它。如果是这种情况,只需运行git pull --rebase,然后再推送最新代码库上的本地更改。

答案 2 :(得分:36)

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

预接收挂钩被拒绝是由于大文件。基本上验证推送。

要解决此问题,我使用以下命令删除了最后一次提交:

git reset --soft HEAD~1

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

希望它有所帮助。

答案 3 :(得分:7)

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

答案 4 :(得分:5)

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

答案 5 :(得分:5)

当GitLab服务器正在进行一些更改时,我收到此消息。第二天推进工作正常。无论如何,正如其他人指出的那样,请与维护人员确认一下。

答案 6 :(得分:3)

在我的情况下,我收到此消息是因为分支在GitLab中被标记为“受保护”。

答案 7 :(得分:3)

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

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

答案 8 :(得分:2)

有时,因为您推送的分支已受到保护,所以您可以要求存储库的维护者更改保护状态。在git-lab中,您可以在

中找到它
Settings > Repository > Protected Branches .

:)

答案 9 :(得分:2)

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

答案 10 :(得分:2)

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

答案 11 :(得分:1)

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

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

答案 12 :(得分:1)

问题:“裁判/裁判/头失败-接收前挂钩失败”

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

  

推杆裁判/头/失败-预接收挂钩被拒绝

所以尝试检查的结果与其他项目仓库相同,并且没有任何问题。

修复:

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

答案 13 :(得分:1)

以防万一:

在Gitlab中,我有一个空白存储库,没有要取消保护的主分支,因此在运行git push -u origin --all

之前
  • 我必须先运行git push -u origin master
  • 取消保护主分支临时
  • 将其余(--all--tags)推入

答案 14 :(得分:1)

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

答案 15 :(得分:1)

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

答案 16 :(得分:1)

我在GitHub gist上遇到此错误。 我试图在子目录中推送带有文件的提交。 事实证明,要点只能在根目录中包含文件。

答案 17 :(得分:1)

就我而言,问题是 Rewriting branch history is not allowed 限制。 转到 Repository settings -> Branch Permissions 编辑所选分支的权限,然后选中 Allow rewriting branch history

Allow rewriting branch history

答案 18 :(得分:0)

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

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

答案 19 :(得分:0)

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

<块引用>

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

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

您可以在以下位置找到:

  • Gitlab -> 设置 -> 仓库 -> 推送规则

只需禁用提交限制即可。

答案 20 :(得分:0)

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

答案 21 :(得分:0)

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

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

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

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

答案 22 :(得分:0)

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

答案 23 :(得分:0)

我遇到了权限问题,在获得正确的权限后,我便可以推送内容。我正在将现有项目推入新的git repo。

答案 24 :(得分:0)

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

答案 25 :(得分:0)

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

答案 26 :(得分:0)

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

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

enter image description here

答案 27 :(得分:0)

在我的情况下,我有一个新的存储库,推送了一个分支(“ UCA-46”,而不是“ master”),对其进行了重新设置基础,再次强行推送并得到了错误。没有网络挂钩。我按照@ThiefMaster的建议执行了Index(['Name', 'RoomNumber', 'NumberOfGuests'], dtype='object') Index(['Name', 'RoomNumber'], dtype='object') ,不得不重新设置基准并能够推动分支。但这是一种奇怪而困难的方法。

然后我看到了Git push error pre-receive hook declined。我发现我的分支受到了保护。我取消了保护,可能会再次强行推动。

enter image description here

答案 28 :(得分:0)

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

git push -u origin --all

答案 29 :(得分:0)

Bitbucket :检查“设置”中的“分支”权限(可能位于“全部拒绝”上)。 如果这不起作用,只需clone your branch to a new local branch,将更改推送到远程(将创建一个新的远程分支),然后创建一个PR。

答案 30 :(得分:0)

对我来说,错误是该项目没有创建任何分支,而我的角色是开发人员,所以我无法创建任何分支,要求他们立即给予我相关权限和所有权限!

答案 31 :(得分:0)

在我的情况下,这是因为我不小心将一个巨大的文件添加到了未提交的推送中,无论之后执行了何种拉动,重置或rm,我都无法摆脱它。

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

听起来不太好,但是可以...

答案 32 :(得分:0)

对我来说,远程git服务器上的授权可以解决问题。 enter image description here

答案 33 :(得分:0)

在我的例子中,我们有提交消息的钩子,如果它们具有提交消息"<JIRA ID><Message>"的特殊格式,我们的服务器脚本将接受提交。如果相应的Jira票证不存在或者提交消息中有一些特殊符号,它(钩子)拒绝提交。我添加/,[,&gt;在提交消息中,删除那些工作正常。

答案 34 :(得分:0)

我试图推送到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% /

答案 35 :(得分:-3)

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

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