rebase来压缩同一分支上的多个提交

fai*_*zal 6 git

我们可以使用rebase将多个提交压缩到同一个分支上的一个提交中吗?

举个例子,我创建了两个主题分支 - 来自master的issueA_1和issueA_2.我在两个分支中进行了几次提交,如图中所示(为了简洁,我在这里使用提交名称而不是提交哈希):

           -->  (issueA_1) - commitX1
          /
(master)--
          \
           -->  (issueA_2)
                   |
                commitY1
                   |
                commitY2
Run Code Online (Sandbox Code Playgroud)

然后我做:

git checkout issueA_2
git rebase -i issueA_1
Run Code Online (Sandbox Code Playgroud)

我将rebase文件更改为:

pick commitY1
fixup commitY2
Run Code Online (Sandbox Code Playgroud)

在此rebase之后,提交历史记录如下所示:

           -->  (issueA_1) - commitX1
          /
(master)--
          \
           -->  (issueA_2)
                   |
                commitX1
                   |
                commitY1
                   |
                commitY2
Run Code Online (Sandbox Code Playgroud)

我不再需要分支问题A_1,所以我这样做:

git branch -D issueA_1
Run Code Online (Sandbox Code Playgroud)

issueA_2的提交历史还不足以合并到master中.我希望在合并到master之前将此分支的commitX1,commitY1和commitY2压缩为1个单一提交.这可能吗?

Ili*_*ion 15

是的,我发现最简单的方法是:

git rebase -i HEAD~3
Run Code Online (Sandbox Code Playgroud)

这将让你查看最后3次提交,然后你可以压缩它们.