回滚一个远程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仓库中的最后一个提交?