我有一个远程Git存储库,我需要将最后的n
提交回滚到冷漠的遗忘中.
您可以使用git revert
所有n次提交,然后照常推送,保持历史不变.
或者你可以"回滚" git reset --hard HEAD~n
.如果您正在推动公共或共享存储库,您可能会根据原始分支发生分歧并破坏其他工作.Git会阻止您这样做,但您可以使用git push -f
强制更新.
elmarco是正确的......他的建议最适合共享/公共存储库(或者至少是公共分支机构).如果没有共享(或者你愿意破坏他人),你也可以推送一个特定的参考:
git push origin old_master:master
或者,如果有一个特定的提交SHA1(比如缩写形式的1e4f99e),你想回到:
git push origin 1e4f99e:master
幸运的是,我可以使用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