github - 错误: Undo last git commit on both local and remote

标签 github local commit undo git-remote

假设我在本地 A 上有一个分支,并且该分支也存在于远程 origin/A 中。我的本地和远程分支都是同步的。例如,在本地,我提交了类似 - C1C2C3C4 的代码,在我的远程代码中也是如此好吧。

现在我想恢复我为 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 的提交。从功能上来说,这两个分支的行为就像 C4R 提交都不存在,即:

local/remote: C1 -- C2 -- C3

关于github - 错误: Undo last git commit on both local and remote,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33910395/

相关文章:

php - 在本地计算机之间移动 WP 站点后出现警告

git - 如何编写好的 Git 提交信息?

Github)删除旧的提交

git - 如何为 TeamCIty 中的未决更改编写 git 日志

gitignore 忽略中间有空格的文件夹中的文件

python - execfile() 不能可靠地用于修改函数的局部变量

Git:如何 checkout 新的远程分支?

python threading.local() 在不同的模块中

bash - 如何使用 curl 创建 Github Pull Request?

eclipse - 从 Github 导入 Ant 项目