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

Dav*_*ave 159 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'
Run Code Online (Sandbox Code Playgroud)

这是怎么回事?

Ale*_*ysh 107

你应该问谁维护回购git@mycogit/cit_pplus.git.

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

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

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

  • 就我而言,BitBucket对提交消息内容进行了验证,并将其与当时处于脱机状态的JIRA票证进行了对比. (7认同)
  • 在我的情况下,生成提交的用户名和BitBucket中的用户名不匹配。我无权更新BitBucket用户名,因此我不得不重置自己的提交,然后使用更新的用户名再次提交。您可以使用以下命令更新git用户名:git config user.name'UpdatedUserName' (4认同)
  • 在我们的例子中,bitbucket 不允许任何人推送到这个分支。 (3认同)

Thi*_*ter 73

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


ozk*_*ary 49

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

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

要解决它,我删除了最后一次提交使用:

git reset --soft HEAD~1
Run Code Online (Sandbox Code Playgroud)

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

希望能帮助到你.

  • 文件大小限制取决于您的托管服务提供商。GitHub 在这个大小上有一个限制,对于其他人来说,它会有所不同,而自托管的 git 自然没有这样的限制。 (3认同)
  • 如果您有多个提交,请增加索引以将头重置回该提交。例如,使用 HEAD~3 返回到之前的三个提交。始终使用 --soft 开关来维护文件夹中的更改。 (2认同)

gut*_*tte 24

就我的情况(Bitbucket)而言,问题在于Rewriting branch history is not allowed限制。去Repository settings -> Branch Permissions编辑所选分支的权限,并检查Allow rewriting branch history

允许重写分支历史记录

  • 在 GitLab 上,我在“设置”->“存储库”->“允许所有具有推送访问权限的用户”下找到了此选项以强制推送。 (2认同)

小智 10

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


Tho*_*omm 8

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

  • 刚刚遇到这个问题,我猜 GitLab 正在做出改变。花了 10 分钟,结果成功了。我没有改变任何东西。 (2认同)

Dav*_*ong 7

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

  • 请参阅 /sf/answers/2018285111/ 或 GitLab 项目 > 设置 > 存储库,然后使用“受保护的分支”来查找它。 (6认同)

sha*_*cov 6

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

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


ser*_*rup 5

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

  • 在我的情况下即使删除文件GitHub仍然抱怨...但这个答案做了伎俩/sf/ask/1370112201/我 - 已经删除 (2认同)

med*_*mek 5

如果它对某人有帮助:

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

  • 我必须先跑git push -u origin master
  • 暂时取消对 master 分支的保护
  • 推动其余部分 ( --all& --tags)


hai*_*ang 5

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

Settings > Repository > Protected Branches .
Run Code Online (Sandbox Code Playgroud)

:)