回滚一个远程Git仓库

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

你可以使用git revert <commit>…进行所有的n次提交,然后像平常一样按下,保持历史logging不变。

或者你可以用git reset --hard HEAD~n “roll back”– git reset --hard HEAD~n 。 如果您正在推送公共或共享的存储库,则可能会根据您的原始分支发散和破坏其他工作。 Git会阻止你这样做,但你可以使用git push -f来强制更新。

elmarco是正确的…他的build议是最好的共享/公共仓库(或,至less公共分支机构)。 如果不共享(或者你愿意打乱别人),你也可以推特别的参考:

 git push origin old_master:master 

或者,如果有一个特定的提交SHA1(比如说缩写为1e4f99e),你想回到:

 git push origin 1e4f99e:master 

幸运的是,我能够使用Pat Notz的解决scheme ,彻底删除了不需要的提交。 但是,最初我得到了错误

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

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

 git push -f origin 52e36b294e:master 

如果您可以直接访问远程仓库,则可以始终使用:

 git reset --soft <sha1> 

这是有效的,因为没有试图修改不存在的工作目录。 有关更多详细信息,请参阅原始答案:

我怎样才能取消提交git仓库中的最后一个提交?