我无法找到解决问题的方法:
如何在本地和远程存储库中删除提交。
这是一个solution。但是当我尝试这个时,我可以在我的本地存储库中使用reset
命令返回。但我无法推动它。错误消息说:
remote: error: denying non-fast-forward refs/heads/master (you should pull first)
但在pull
之后,我的主人再次指向我要删除的提交。
你能帮忙吗?
编辑 - 我的尝试:
$ 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'
答案 0 :(得分:3)
您的远程存储库可能有一个设置,禁止在服务器端进行非快进推送。您有两种选择:
与服务器管理员联系,解释您的情况,并要求他们(暂时)取消禁止快进推送政策,例如git config receive.denyNonFastForwards
。 (您仍然需要-f
标志才能推送。)
使用git revert
代替git reset
,然后推送生成的提交。提交及其反转都是可见的,但有时无法避免。除非原始提交包含敏感数据,否则这应该是一个大问题 - git提交会一直被还原。如果原始提交确实包含敏感数据,请参阅选项1.