如何在本地分支上压缩特定提交?

时间:2014-06-19 15:34:07

标签: git

我可以找到一些接近我想要的答案,但我担心我没有足够的经验与Git完全理解如何实现我想要的。

给定一个本地分支提交A-B-C-D-E-F-G-H-I-J,我想将一些提交压缩在一起,以便最终得到相当于A-BCD-E-FGH-IJ的信息。

这可能吗?目的是在重新定位之后,在合并回主分支之前对本地分支执行此操作,以便创建更简洁和信息丰富的历史记录。

2 个答案:

答案 0 :(得分:33)

您可以使用rebase执行此操作。假设提交A-J位于branchname之上构建的本地分支master上,您可以这样做:

git checkout branchname
git rebase -i master

您将被阻止使用这样的交互式窗口:

pick A Commit message A
pick B Commit message B
pick C Commit message C
pick D Commit message D
pick E Commit message E
...

交互式rebase为您的场景提供了说明,因此您应该为C和D更改“选择”为“压缩”(对于G,H和J,相同):

pick A Commit message A
pick B Commit message B
squash C Commit message C
squash D Commit message D
pick E Commit message E

这会将B,C和D压缩到一个提交中,允许您更改提交消息。

如果您乐意使用B的提交消息,则可以使用“fixup”而不是“squash”,并且不会提示您更新提交消息。

答案 1 :(得分:1)

git log --oneline
git checkout your-branch
git rebase -i HEAD~3

写您的评论,然后:wq(写并退出),然后按Enter。

git log --oneline

enter image description here