如何在分支的 git 中将 2 次提交合并为 1 次提交?

How can I combine 2 commits into 1 in git in a branch?

我在 "Feature" 分公司工作。
所以我的 git 树是:

                  master
A<--B<--C<--D<--F<--G
            |<--E
                Feature  

我想在 Feature 分支上工作时获取 master 的所有最新信息,所以我做了:

git checkout Feature  
git rebase master  

在变基过程中,我在一个文件中遇到了合并冲突,在手动解决冲突过程中,我犯了一个错误,后来我才意识到 运行 git rebase --continue
所以我最终得到了一棵树:

                 master      
A<--B<--C<--D<--F<--G<--E  
                       Feature

然后我意识到我的错误实际上破坏了 E 中的构建。
我纠正了我的错误(尚未提交)并继续我的工作,但我不想在 Feature 中有 2 次提交最终会出现在 master 中,而其中一次提交是错误的提交。
另外,我想在我的 Feature 工作的 master 分支中完成一次提交。
所以如果我有:

                 master      
A<--B<--C<--D<--F<--G<--E<--H  
                           Feature   

如何将 E 和 H 合并为一个提交,这样当我这样做时:

git checkout master  
git rebase feature   

我的主人只有 1 次提交? 注意:分支功能是本地的,如果重要则不会推送。

您可以使用交互式变基来组合两个提交。您需要在第二个上使用 squash 选项。

开始于:

git rebase -i HEAD~2

在编辑器中,您将按以下顺序看到 2 行:

pick E's SHA-1
pick H's SHA-1

替换为

pick E's SHA-1
squash H's SHA-1

然后关闭编辑器。 Git会选择E,然后组合H。

系统将提示您输入新的合并提交消息。完成后关闭该编辑器,rebase 将自行完成。