git revert-使用git reset --hard后无法推送更改

我有一个错误,对git做了一些我不应该提交的更改。提交后,我推送了更改。然后,我使用以下命令尝试重置更改。

 git reset --hard head

现在,我想使用以下命令将此“重置”推送到远程存储库:

git push MyBranch

但我收到此错误:

remote: error: denying non-fast-forward refs/heads/branch (you should pull first)

我尝试使用此命令没有成功:

git push -f "origin" 

知道我能做什么吗?

mans asked 2020-07-26T03:01:43Z
2个解决方案
86 votes
git push -f origin myBranch 

应该可以工作(前提是您知道如果MyBranch已被其他人在其自己的仓库中获取的话,这可能很危险)

注意:如果您的远程仓库('origin')的配置设置为

receive.denyNonFastForwards true

它将拒绝任何非快进的推送(即使被强制执行)。
请参阅“是否可以将git信息库配置为拒绝'git push --force'?”。


OP user654019报告

这次我通过将git revert -m 1 HEAD~设置为false并使用-f来强制解决了该问题

如果OP无法访问该回购协议,则他/她将必须:

  • 将本地HEAD重置为其原始位置(请参阅“从git revert -m 1 HEAD~恢复”):
    git revert -m 1 HEAD~
  • 如ProGit所述,使用git revert -m 1 HEAD~进行新的提交以取消您的合并:
    git revert -m 1 HEAD~(您的情况)

例如:

$ git revert -m 1 [sha_of_C8]
Finished one revert.
[master 88edd6d] Revert "Merge branch 'jk/post-checkout'"
 1 files changed, 0 insertions(+), 2 deletions(-)

revert a merge

在此处可以找到有关如何还原合并的完整讨论。

这个想法仍然是只生成新的提交,包括还原由合并提交引入的更改。
然后,您可以推送该新提交,作为快速更改。

VonC answered 2020-07-26T03:03:04Z
9 votes

您需要指定要推送的引用:

git push -f origin MyBranch
ralphtheninja answered 2020-07-26T03:03:23Z
translate from https://stackoverflow.com:/questions/9804211/can-not-push-changes-after-using-git-reset-hard