从存储库历史中删除提交

可能重复:
如何删除'git commit'

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

我怎么能在Git中做到这一点,我怎样才能将它应用于Github上的存储库呢?


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

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

鉴于上述历史,您应该在第一次提交之前选择提交来压缩。 假设你想将F和E压缩到D和H中,所以第一个之前的提交是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:有关更多信息,请参阅git-rebase的手册页。

链接地址: http://www.djcxy.com/p/8999.html

上一篇: Remove Commit from Repository History

下一篇: How can I delete a commit to git