我可以找到一些接近我想要的答案,但我担心我没有足够的经验与Git完全理解如何实现我想要的。
给定一个本地分支提交A-B-C-D-E-F-G-H-I-J,我想将一些提交压缩在一起,以便最终得到相当于A-BCD-E-FGH-IJ的信息。
这可能吗?目的是在重新定位之后,在合并回主分支之前对本地分支执行此操作,以便创建更简洁和信息丰富的历史记录。
答案 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)