正确的方法来清理主人的git历史

时间:2016-09-21 11:39:24

标签: git github git-commit git-revert

我在分支机构" master"。 我有这样的git历史:

333  (#82)
444  (#83)

然后我做了一些提交和恢复(222-> 111-> 010-> 789-> 456-> 123):

123 Revert "(#84)"
456 Revert "(#81)"
789 Revert “(#81)"
010 Revert "(#86)"
111  (#86)
222  (#84)
333  (#82)
444  (#83)

我需要以某种方式清除那些错误的步骤(222-> 111-> 010-> 789-> 456-> 123)以将历史返回到:

333  (#82)
444  (#83)

如果我这样做会没问题:

git rebase -i 333

并会丢失错误的提交? 然后

git push -f

1 个答案:

答案 0 :(得分:1)

假设您没有推送提交并恢复,执行以下操作:

git reflog  

这将以反向时间顺序为您提供操作列表(包括所有恢复和提交)。找到最后一个稳定的提交,并以HEAD@{somenumber}的形式找到它的头部。然后回到该提交,执行以下操作:

git reset --hard HEAD@{somenumber}