删除git中的远程提交

删除git中的远程提交,git,Git,我找不到解决问题的有效方法: 如何删除本地和远程存储库中的提交。 这里有一个。但当我尝试此操作时,我可以在本地存储库中使用reset命令返回。但我不能推它。错误消息显示: remote:错误:拒绝非快进参考/头/主(您应该先拉) 但是在pull之后,我的master再次指向我要删除的commit 你能帮忙吗 编辑-我的尝试: $ git reset --hard HEAD^1 HEAD is now at 1c50f9c good commit $ git push -f Total 0 (d

我找不到解决问题的有效方法:

如何删除本地和远程存储库中的提交。 这里有一个。但当我尝试此操作时,我可以在本地存储库中使用
reset
命令返回。但我不能推它。错误消息显示:
remote:错误:拒绝非快进参考/头/主(您应该先拉)
但是在
pull
之后,我的master再次指向我要删除的commit

你能帮忙吗

编辑-我的尝试:

$ git reset --hard HEAD^1
HEAD is now at 1c50f9c good commit

$ git push -f
Total 0 (delta 0), reused 0 (delta 0)
remote: error: denying non-fast-forward refs/heads/master (you should pull first)
To E:/reps/gf.git
 ! [remote rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'E:/reps/gf.git'

您的远程存储库的设置可能不允许在服务器端进行非快进推送。您有两个选择:

  • 联系服务器管理员,解释您的情况,并要求他们(暂时)取消无快进推送策略,使用类似于
    git config receive.denynonfastforts
    。(您仍然需要使用
    -f
    标志来推动。)

  • 使用
    git revert
    而不是
    git reset
    ,并推送结果提交。提交及其逆操作都将可见,但有时无法避免。除非原始提交包含敏感数据,否则git提交将一直被还原,这将是一件大事。如果原始提交确实包含敏感数据,请参见选项1


  • 我试过使用
    gitpush-f
    gitpush-force
    。它不适合我。我在另一个硬盘上有git远程存储库,所以我可以配置它。我尝试使用以下命令:
    git-config--system-receive.denynonfastforts-false
    ,但没有帮助。最后,当我使用
    git-config-receive.denynonfastforts-false
    时,它可以工作。非常感谢@bLAZ我已经更新了答案以包含配置调用。