我有一个远程的 Git 存储库,我需要回滚最后的 n提交到冷忘记。
n
您可以对所有 n 次提交使用 git revert <commit>…,然后像往常一样按下,保持历史记录不变。
git revert <commit>…
或者你可以“回滚”与 git reset --hard HEAD~n。如果您正在推入一个公共或共享存储库,那么您可能会基于您的原始分支分散和中断其他工作。Git 将阻止您这样做,但是您可以使用 git push -f强制更新。
git reset --hard HEAD~n
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)选项会覆盖此错误
-f
git push -f origin 52e36b294e:master