Remove Commit from Repository History
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
How to delete a ‘git commit’
号
知道这将更改历史记录,我想从存储库的历史记录中删除一些意外提交。我希望所有其他提交都保留其存储库的状态。因此,我要删除的提交的更改将由后面的提交覆盖。
我如何在Git中做到这一点,以及如何将其也应用于或仅应用于GitHub上的存储库?
如果我理解正确,"挤压"就是你想要的。
1 | -A-B-C-D-E-F-G-H |
考虑到上面的历史记录,您应该在要挤压的第一个提交之前选择提交。假设你想把f和e压缩成d,把h压缩成g,那么在第一个之前的提交是c。
1 | git rebase -i C |
号
您将看到一个编辑器,其中有一个包含如下内容的文本文件:
1 2 3 4 5 | pick D pick E pick F pick G pick H |
将此修改为:
1 2 3 4 5 | pick D squash E squash F pick G squash H |
。
将要求您检查新提交的提交消息,
产生的历史记录如下:
1 | -A-B-C-D'-G' |
请注意,您总是将较新的提交压缩到较旧的提交,反之亦然。因此,
PS:要将其放入Github存储库,您必须强制推送
PPS:有关更多信息,请参阅Git Rebase的手册页。