我犯了一个错误并对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"
知道我能做什么吗?
答案 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'?”。
我设法通过将
denyNonFastForwards
设置为false
并使用-f
强制推送来解决问题
如果OP无法访问回购,他/她将不得不:
git reset --hard?
”):git reset HEAD@{1}
git revert
: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(-)
有关如何还原合并的完整讨论可以be found here。
这个想法仍然只生成 new 提交,包括恢复合并提交引入的更改。 然后,您可以推送新提交,作为快速更改。
答案 1 :(得分:8)
您需要指定要推送的内容:
git push -f origin MyBranch