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

man*_*ans 44 git git-revert

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

 git reset --hard head
Run Code Online (Sandbox Code Playgroud)

现在我想使用此命令将此"重置"推送到远程存储库:

git push MyBranch
Run Code Online (Sandbox Code Playgroud)

但是我收到了这个错误:

remote: error: denying non-fast-forward refs/heads/branch (you should pull first)
Run Code Online (Sandbox Code Playgroud)

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

git push -f "origin" 
Run Code Online (Sandbox Code Playgroud)

知道我能做什么吗?

Von*_*onC 88

git push -f origin myBranch 
Run Code Online (Sandbox Code Playgroud)

应该工作(如果你知道如果MyBranch已被其他人在他们自己的回购中提取,这可能是危险的)

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

receive.denyNonFastForwards true
Run Code Online (Sandbox Code Playgroud)

它会拒绝任何非快进推送(即使是强制推送).
请参阅" 有没有办法配置git存储库以拒绝'git push -force'? ".


OP user654019报告

我设法通过设置来解决该问题,这时候denyNonFastForwardsfalse使用-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(-)
Run Code Online (Sandbox Code Playgroud)

恢复合并

有关如何还原合并的完整讨论,请参见此处.

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


ral*_*nja 9

您需要指定要推送的ref:

git push -f origin MyBranch
Run Code Online (Sandbox Code Playgroud)