假设我在本地 A
上有一个分支,并且该分支也存在于远程 origin/A
中。我的本地和远程分支都是同步的。例如,在本地,我提交了类似 - C1
、C2
、C3
和 C4
的代码,在我的远程代码中也是如此好吧。
现在我想恢复我为 C4
提交的更改。我已经将其推送到远程,所以我也想在远程执行此操作。
NOTE: I found lot of question in stackoverflow for this. Here is one. But it's not working for me!
据此我尝试过:
git reset --hard HEAD~1
git push -f origin A
第一个命令工作正常,我的本地版本现在没有 C4
提交。
问题出在第二个命令中。它显示远程:错误:拒绝非快进refs/heads/A(您应该先拉)
。
如何解决这个问题?
最佳答案
您当前删除最近提交的方法是完全正确的:
git reset --hard HEAD~1
git push -f origin A
不幸的是,GitHub 似乎不允许你进行强制推送。然而,还有一个替代方案。您可以改为 git revert
最近的提交。这将在分支顶部添加一个新的提交,该提交将撤消最近提交所做的任何操作。想必您在 GitHub 中添加新提交不会有任何问题。如果您想走这条路,请尝试以下操作:
git revert HEAD
git push origin A
您的新分支图将如下所示:
remote: C1 -- C2 -- C3 -- C4 -- R
local: C1 -- C2 -- C3 -- C4 -- R
其中 R
是恢复提交 C4
的提交。从功能上来说,这两个分支的行为就像 C4
和 R
提交都不存在,即:
local/remote: C1 -- C2 -- C3
关于github - 错误: Undo last git commit on both local and remote,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33910395/