Issues with undoing 'git push'
我无意中使用git push将一个项目推送到了git,当时我只想将它放在本地存储库中(应该在git提交之后停止)。
我想撤销这个git push操作,以便服务器repo返回到特定的提交。我已经研究过其他问题,比如这个问题,但是git push-f对我不起作用,它会导致错误:
1 | git push -f origin CommitSHA:mainline |
我认为-f标记将强制执行push,而不管我是否在推动以前的提交。我应该如何修复这个错误以便撤消git push?
你的留言不漏了什么吗?我认为应该说一些像
Merge the remote changes (e.g. 'git pull') before pushing again
号
在拒绝你的推之后。因此,这意味着远程分支可能比本地分支有更多最近的更改,例如,其他人推动了更改。在这种情况下,我建议不要强行推,因为你可能会放弃其他人的承诺。
你可以:
- 无论如何都要这样做(
git pull 首先应该起作用) - 用
git revert 代替撤销你的承诺。这最终将引入第二个提交,恢复第一个提交,因此这两个提交都将在历史记录中(https://git scm.com/docs/git revert)。这不太理想,但是在远程分支上重写历史从来就不是。