相关教程

Git – Squash|极客教程 Git 中的 Squash 合并 | 现代前端开发指南

步骤

步骤 1: 启动交互式 rebase

git rebase -i HEAD~4

这将会打开一个编辑器,列出最近的4个提交(假设使用的是默认编辑器,通常是vimnano):

pick e4f5g6h 第一次提交
pick i7j8k9l 第二次提交
pick m1n2o3p 第三次提交
pick a1b2c3d 最新的提交

步骤 2: 调整提交

你将看到一个列表,每一行代表一个提交,最早的提交在顶部。为了压缩最后三个提交,你需要将它们前面的 pick 改为 squashs(对于你想合并入的提交)。但请保留列表中的第一个提交(即最早的提交)为 pick

你的编辑器中应该看起来像这样:

pick e4f5g6h 第一次提交
squash i7j8k9l 第二次提交
squash m1n2o3p 第三次提交
squash a1b2c3d 最新的提交

这个配置会将最后三个提交合并到第一个提交(e4f5g6h 第一次提交)中。

步骤 3: 完成重写

保存并关闭编辑器。Git 现在将开始合并提交。如果你选择了 squash,Git 将会打开一个新的编辑器窗口,让你编辑新的提交消息。这个提交消息将包含所有被合并提交的提交消息,以便你可以编辑。

编辑提交消息后,保存并关闭编辑器。现在,你已经成功地将多个提交合并为一个提交。

步骤 4: 查看结果

你可以通过以下命令查看新的提交历史:

git log

你应该能看到之前的三个提交现在已经被合并到一个新的提交中。

步骤 5: 更新远程仓库

如果你之前已经将这些提交推送到了远程仓库,由于你改变了提交历史,你需要用强制推送来更新远程仓库:

git push --force

注意:强制推送会重写远程仓库中的历史。在执行此操作前,请确保这是你想要的,并且不会干扰其他合作者的工作。

完成这些步骤后,你就成功地将多个提交压缩成了一个提交。