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

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'

这是怎么呢


当前回答

在我的情况下(Bitbucket),问题是重写分支历史是不允许限制的。 进入存储库设置->分支权限编辑所选分支的权限,并勾选“允许重写分支历史记录”

其他回答

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

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

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

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

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

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

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

你可以在以下网址找到:

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

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

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

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

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

git reset --soft HEAD~1

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

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

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

Settings > Repository > Protected Branches .

:)

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