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(-)
在此处可以找到有关如何还原合并的完整讨论。
这个想法仍然是只生成新的提交,包括还原由合并提交引入的更改。
然后,您可以推送该新提交,作为快速更改。
9 votes
您需要指定要推送的引用:
git push -f origin MyBranch