如何将多个历史提交合并为一个而不触及最近的提交?

问题描述

我想将多个历史提交组合在一起,同时不接触最近的提交,如图所示,我只想将2-4个提交组合在一起。

阅读相关答案和帖子后,我尝试了 git rebase - i HEAD~5 并在 vim 中修复和重命名提交,但我发现这会将它们合并为一个提交。有没有一种方法可以组合中间提交,同时保持最近的提交不变?

git

解决方法

@LWang, 不可以。你不能合并中间的提交,而保持最近的提交不变。

但是,如果您必须这样做,别无选择,那么您可以重置为您需要更改的提交并重新开始提交。 只有在很少(一两个)提交时,我才会推荐这个 保留,您非常清楚哪些更改会导致哪些提交。

在您的示例中,您可以按照以下步骤操作;

**git reset -- mixed 66b8e0b**  (Your changes will be preserved)
**git add <filename>**  (add only those files which are required for the middle commit)
**git commit <commit message>** (Enter the commit message for the middle commit)
**git add <filename>** (add all the pending files)
**git commit -m "Wireup survey flag"**