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

时间:2012-03-21 11:59:49

标签: git git-revert

我犯了一个错误并对git做了一些改变,我不应该这样做。 在我提交之后,我推动了我的更改。 然后,我使用以下命令尝试重置我的更改。

 git reset --hard head

现在我想使用以下命令将此'reset'推送到远程存储库:

git push MyBranch

但是我收到了这个错误:

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

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

git push -f "origin" 

知道我能做什么吗?

2 个答案:

答案 0 :(得分:76)

git push -f origin myBranch 

应该有用(前提是你知道如果MyBranch已被其他人在自己的回购中提取,这可能会很危险)

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

receive.denyNonFastForwards true

它会拒绝任何非快进推送(即使是强制推送) 请参阅“Is there a way to configure git repository to reject 'git push --force'?”。


OP user654019报告

  

我设法通过将denyNonFastForwards设置为false并使用-f强制推送来解决问题

如果OP无法访问回购,他/她将不得不:

以示例:

$ 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

有关如何还原合并的完整讨论可以be found here

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

答案 1 :(得分:8)

您需要指定要推送的内容:

git push -f origin MyBranch