删除部分git历史

时间:2018-07-27 07:04:27

标签: git version-control

例如,我有一个由6个提交(从最早到最新)的仓库,1EE21B4E596346EFEE966437410673134023。如何删除从4E5963966437的提交,以使410673紧跟在1EE21B之后? (1EE21B <-410673 <-134023

1 个答案:

答案 0 :(得分:3)

您可以使用git rebase将提交压缩为一个。因此,您必须这样做:

git rebase -i HEAD~5

然后您将在vim编辑器中看到以下内容:

pick 1EE21B a commit message 
pick 4E5963 a commit message
pick 966437 a commit message
pick 410673 a commit message
pick 134023 a commit message

您可以将提交标记为已压缩,这会将它们融合到先前的提交中。要将提交压缩为第一个,您需要将其更改为:

pick 1EE21B a commit message 
squash 4E5963 a commit message
squash 966437 a commit message
pick 410673 a commit message
pick 134023 a commit message

在vim编辑器中保存后,您将需要提交和git push -f。这是有关操作方法的完整tutorial

编辑:请确保在强行推动之前检查git日志,以达到所需的效果。