删除旧的git提交

我对git很陌生,想知道这样的事情是否可能?

>git log --pretty=oneline --abbrev-commit 2f05aba Added new feature 3371cec Fixed screw up <-- I want to remove this daed25c Screw up <-- and remove this. e2b2a84 First. So it's like they never happend. 

这可能吗?

这是可能的与git rebase 。 尝试以下

 git rebase -i HEAD~4 

然后按照编辑器中的交互式说明进行操作。 在第一步,你“挤压”提交。 它应该看起来像这样:

 pick 2f05aba ... will be preserved squash 3371cec ... will be squashed with daed25c squash daed25c ... will be squashed with e2b2a84 pick e2b2a84 .. will contain this and 3371cec and daed25c 

在第二步中,您可以编辑提交消息。

如果你真的想删除它们(从历史中抹去它们,永远不会再被看到),你可以

运行rebase:

 git rebase -i HEAD~4 

然后,删除(或注释掉)与您想要删除的提交相对应的行,如下所示:

 pick 2f05aba ... #will be preserved #pick 3371cec ... #will be deleted #pick daed25c ... #will be deleted pick e2b2a84 ... #will be preserved