重置后在git push中显示错误 - 硬,非快速致命错误

时间:2013-08-04 15:09:57

标签: git

我想在远程存储库中删除两个损坏的提交。

我用过:

git reset --hard <commit_id>

所以我可以回到我想要恢复的最后一次提交。然后我通过从外部文件夹(不在存储库中)粘贴我修改过的文件来应用我所做的更改。

现在,当我回到远程存储库时,它会抛出一个错误:

$ git push origin master --force
me@mydomain.com's password:
stdin: is not a tty
Total 0 (delta 0), reused 0 (delta 0)
remote: error: denying non-fast-forward refs/heads/master (you should pull first
)
To ssh://me@mydomain/repos.git
! [remote rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'ssh://me@mydomain/repos.git'

但是如果我再次拉,那么我使用git reset删除的旧提交会回来。

我尝试使用

git push origin master --force 

已经但它仍然不起作用。

我该如何解决这个问题,以便我可以从遥控器中删除提交,并将我的新文件追加回来?

谢谢!

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~

更新:

使用git push origin :master 这是qqx答案的输出

$git push origin :master
stdin: is not a tty
remote: error: By default, deleting the current branch is denied, because the next
remote: error: 'git clone' won't result in any file checked out, causing confusion.
remote: error:
remote: error: You can set 'receive.denyDeleteCurrent' configuration variable to

remote: error: 'warn' or 'ignore' in the remote repository to allow deleting the

remote: error: current branch, with or without a warning message.
remote: error:
remote: error: To squelch this message, you can set it to 'refuse'.
remote: error: refusing to delete the current branch: refs/heads/master
To ssh://me@domain.com/repos.git
! [remote rejected] master (deletion of the current branch prohibited)
error: failed to push some refs to ssh://me@domain.com/repos.git

1 个答案:

答案 0 :(得分:4)

您的远程存储库可能具有receive.denyNonFastForwards设置 在其配置中启用。此选项的文档说明:

  

如果设置为true,git-receive-pack将拒绝不是a的ref更新   快进。使用此选项可以防止通过推送进行此类更新,即使该推送也是如此   被迫。初始化共享时设置此配置变量   库中。

您可以通过以下方式解决这个问题:

git push origin :master
git push origin master

第一个命令中分支名称的前导冒号将其转换为a 请求删除远程存储库上的分支。完成之后 推动你当前版本的分支将不再被视为一个 非快进推。但也有一个可以设置的选项 远程存储库以防止删除receive.denyDeletes