Git在尝试推送时出错——pre-receive hook被拒绝

当我尝试推动我已经提交的更改时,我得到以下错误…

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'

这是怎么呢

1008654 次浏览

你应该询问在git@mycogit/cit_pplus.git维护回购的人。

你的提交被该repo的pre-receive拒绝(这是一个用户可配置的脚本,用于分析传入的提交,并决定它们是否足够好,可以被repo接受)。

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

如果维护者是您自己,那么您在服务器端的设置似乎遇到了问题。到时请分享更多信息。

我敢打赌,你正在尝试一个非快进推球,而钩球挡住了它。如果是这种情况,只需运行git pull --rebase,然后在最新的代码库上执行本地更改。

这可能是因为你没有将提交推入分支(如master)的访问权限。您可以要求维护者赋予您推送提交的权限。

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

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

预收勾谢绝的原因是档案大。基本上是在验证推送。

为了解决这个问题,我删除了最后一次提交使用:

git reset --soft HEAD~1

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

< p >注意: 使用HEAD~N返回到前N次提交。(即3、4) 始终使用——软开关来维护

文件夹中的更改

希望能有所帮助。

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

在我的例子中,我收到这条消息是因为这个分支在GitLab中被标记为“受保护”。

当我试图推到一个dokku实例时,我得到了这个。结果发现我服务器的磁盘已经满了。

< p >跑: du -f < / p >

结果是:

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% /

在我的例子中,我们有用于提交消息的钩子,我们的服务器脚本接受提交,如果它们具有提交消息__abc0的特殊格式。如果相应的Jira ticket不存在或在提交消息中有一些特殊的符号,它(钩子)拒绝提交。当我在提交消息中添加/,[,>等时,我面临这个错误,删除这些工作很好。

这实际上是在BitBucket服务器端启用YACC时发生的。YACC是启用的,以便在提交消息中提到JIRA问题名称。所以当你提交任何东西时,至少要在提交消息中保留你的JIRA号码,然后你可以添加自己的消息。

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

不确定下划线的原因是什么,但这是固定的。

For me在远程git服务器上授权解决问题。 enter image description here < / p >

我使用GitKraken,我们做了一个本地分支,然后我们合并了两个远程分支,然后我们尝试将本地分支推到原点。它不能使用相同的错误消息。

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

在我的例子中,这是因为我不小心在未提交的推送中添加了一个巨大的文件,无论我之后做什么拉或重置或rm,我都无法摆脱它。

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

这听起来不太好,但确实有效……

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

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

PUSH失败refs/head/ - pre-receive hook拒绝

所以试着检查一下,其他项目的回购也是一样的,他们没有任何问题。

解决办法:

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

万一能帮到别人

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

  • 我必须先运行git push -u origin master
  • 取消保护主分支暂时
  • --all &--tags)

对我来说,错误在于项目没有创建任何分支,而我的角色是开发人员,所以我不能创建任何分支,请求他们给我相关的权限和一切都井然有序!

Bitbucket都:检查设置中的分支权限(它可能是“拒绝所有”)。 如果这不起作用,简单地将您的分支克隆到一个新的本地分支,将更改推到远程(将创建一个新的远程分支),并创建一个PR.

我遇到了同样的错误,在检查我有一个开发人员访问,不能发布一个新的分支。增加更高的访问权限解决了这个问题。

我用GitHub gist得到这个错误。 我试图将子目录中的文件提交。 原来gist只能在根目录下有文件

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

git push -u origin --all

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

然后我看到Git推送错误,预接收钩子被拒绝。我发现我的分支变成了受保护的。我解除了保护,又可以用力推了。

enter image description here

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

对我来说,一切都很顺利,直到Bitbucket今天(2020年4月21日)自动更改了他们的政策。这恰好与今天最近引入的一个名为工作区的新功能相一致,所以我怀疑它与此有关。

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

enter image description here

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

Settings > Repository > Protected Branches .

:)

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

我有权限问题,给了正确的权限后,我能够推动内容。我把一个现有的项目推到一个新的git回购。

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

在我的情况下,我得到这个错误,因为具有相同名称的分支已经存在。从git服务器上删除这个分支可以解决这个问题。

如果你在做Push的时候遇到了git中预接收钩子拒绝的问题。 你可能有以下原因:

  1. 可能您的项目路径app_data中的DB备份超过了 Github.
  2. 如果在项目中使用的文件不超过10.00MB或任何文件的大小限制,请检查文件的大小。

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

    只要压缩这些文件,然后再推一次 Git push -u origin develop

你的提交与存储库维护者的规则不兼容,你只需要git reset --hard HEAD ~ 1来删除最后的提交。在此之后,根据维护者的规则就可以了

在我的例子中,在Gitlab的一个项目中有一个Committer限制:

用户只能将通过自己的验证电子邮件提交的提交推到此存储库。

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

你可以在以下网址找到:

  • Gitlab→设置→库→推动规则

只要禁用提交限制,它就会工作。

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

  1. 删除与有问题分支相关的现有拉请求,
  2. 删除服务器端的分支,
  3. 从本地重新推到远程回购,然后,
  4. 再次创建拉取请求。
在我的情况下(Bitbucket),问题是Rewriting branch history is not allowed限制。 转到Repository settings -> Branch Permissions编辑所选分支的权限,并检查Allow rewriting branch history

允许重写分支历史记录

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

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

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

阻止我推进的问题是: https://bitbucket.status.atlassian.com/incidents/r8kyb5w606g5 < / p >

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

在我的情况下,随着消息,我需要在提交文件中添加bug id, bug url和审批者,然后推送到分支并放置合并请求。

希望这对你有所帮助,当你写提交信息的时候,问问你的导师/朋友提交信息中的要求。

简单快捷的解决方法:-

Git commit -m "branch_name:添加Git脚本"

! [远程拒绝]master ->Master(预接收钩拒绝)

我花了2天时间在这个bug上! 经过大量的研究,我终于找到了解决这个问题的办法
  1. Heroku config:set USE_NPM_INSTALL=false
  2. 在Heroku上配置了纱线构建包
  3. 确保yarn.lock文件不在你的.gitignore文件中

它会起作用的!

就我而言,我自己管理这个项目,但最近将其升级到爱好者级别。在任何情况下,通过herokus浏览器界面检查日志,它有一个关于节点版本(它是一个express应用程序)没有在package.json中定义的非常明确的消息。他们有一个heroku页面的链接,概述了如何修复它,它成功了。

无论如何,我只是把这个加到我的包里。Json,没有进一步的问题!

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

为了明确起见,我先检查了我的节点版本和npm版本。我的节点版本是16,但我的npm版本是7。我决定让npm定义为6。只是因为这是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/managing-large-files/moving-a-file-in-your-repository-to-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

步骤3:

git commit -m "your comments here"

目的:

git push

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