回滚远程 Git 存储库

我有一个远程的 Git 存储库,我需要回滚最后的 n提交到冷忘记。

104815 次浏览

您可以对所有 n 次提交使用 git revert <commit>…,然后像往常一样按下,保持历史记录不变。

或者你可以“回滚”与 git reset --hard HEAD~n。如果您正在推入一个公共或共享存储库,那么您可能会基于您的原始分支分散和中断其他工作。Git 将阻止您这样做,但是您可以使用 git push -f强制更新。

Elmarco 是正确的... ... 他的建议是共享/公共存储库(或者,至少是公共分支)的最佳选择。如果它没有被分享(或者你愿意打扰别人) ,你也可以推荐一个特定的推荐人:

git push origin old_master:master

或者,如果有一个特定的提交 SHA1(比如缩写形式的1e4f99e) ,您希望返回到:

git push origin 1e4f99e:master

如果您可以直接进入远程回购,您可以随时使用:

git reset --soft <sha1>

由于没有试图修改不存在的工作目录,因此这种方法是有效的。详情请参阅原始答案:

如何在 git 空存储库中取消上一次提交?

幸运的是,我可以使用 Pat Notz 的解决方案来完全删除不需要的提交。但是,最初我得到了错误

error: failed to push some refs to 'ssh://git@gitrepo.git'
To prevent you from losing history, non-fast-forward updates were rejected*

但是添加 force (-f)选项会覆盖此错误

git push -f origin 52e36b294e:master