我们可以使用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个单一提交。这可能吗?
答案 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
也应该有效。在这种情况下,你不需要计算(我通常只有一次)。