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

时间:2014-08-15 09:06:21

标签: git

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

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

           -->  (issueA_1) - commitX1
          /
(master)--
          \
           -->  (issueA_2)
                   |
                commitY1
                   |
                commitY2

然后我做:

git checkout issueA_2
git rebase -i issueA_1

我将rebase文件更改为:

pick commitY1
fixup commitY2

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

           -->  (issueA_1) - commitX1
          /
(master)--
          \
           -->  (issueA_2)
                   |
                commitX1
                   |
                commitY1
                   |
                commitY2

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

git branch -D issueA_1

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

2 个答案:

答案 0 :(得分:12)

是的,我找到的最简单方法是:

git rebase -i HEAD~3

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

答案 1 :(得分:1)

在你的情况下,

git checkout issueA_2
git rebase -i master

git rebase -i commitX1^ #parent of commitX1 in branch issueA_2

也应该有效。在这种情况下,你不需要计算(我通常只有一次)。