从存储库历史记录中删除提交

时间:2012-12-30 00:24:33

标签: git github commit

  

可能重复:
  How to delete a ‘git commit’

知道这会改变历史记录,我想从存储库的历史记录中删除一些意外提交。我希望所有其他提交保留其存储库的状态。因此,我想要删除的提交的更改将由它们之后的提交覆盖。

我如何在Git中执行此操作,如何将其也应用于Github上的存储库?

1 个答案:

答案 0 :(得分:5)

如果我理解正确,“挤压”就是你想要的。

  -A-B-C-D-E-F-G-H

鉴于上述历史记录,您应该在第一次提交之前选择提交。假设您想要将F和E压缩为D而将H压入G中,因此在第一个之前提交是C。

  git rebase -i C

您将看到一个包含以下内容的文本文件的编辑器:

pick D
pick E
pick F
pick G
pick H

将其修改为:

pick D
squash E
squash F
pick G
squash H

您将被要求查看新提交的提交消息,

结果历史记录如下:

  -A-B-C-D'-G'

请注意您总是将较新的提交压缩为较旧的提交,而不是相反。因此pick Gsquash H。在历史继续发展之后,将其视为修改提交。

PS:要将此内容放入GitHub存储库,您必须强制推送git push -f origin(假设origin是您的GitHub远程数据库)。

PPS:有关详细信息,请参阅man page of git-rebase