关键词:多次提交压缩成一次提交
将多次提交压缩成一次提交在 Git 中被称为“squash”。这通常在你完成一段工作后,想要将这段时间内的多个提交整理为一个更干净、更整洁的提交记录时使用。Git 提供了几种方法来实现提交的压缩,最常用的是通过 git rebase
命令配合交互模式(interactive mode)来实现。
使用 git rebase -i
进行交互式压缩
假设你想压缩最近的 N 次提交。首先,你需要确定从哪个提交开始进行操作。可以通过 git log
查看提交历史,然后选择你想要压缩的提交的前一个提交作为起点。
-
启动交互式 rebase 会话:
git rebase -i HEAD~N
其中
N
是你想要压缩的提交数量。例如,如果你想要压缩最近的 3 次提交,你应该使用git rebase -i HEAD~3
。 -
编辑 rebase 会话中出现的命令列表:
执行上述命令后,你的默认文本编辑器会打开一个带有待压缩提交列表的文件。这些提交被列出来,前面默认是
pick
命令。pick e3a1b35 第一次提交的消息 pick 7ac9a67 第二次提交的消息 pick 1d2a3f4 第三次提交的消息
将除了第一个提交之外的所有
pick
命令改为squash
或简写s
,表示这些提交将被压缩到前一个提交中。pick e3a1b35 第一次提交的消息 squash 7ac9a67 第二次提交的消息 squash 1d2a3f4 第三次提交的消息
-
保存并退出编辑器:
一旦保存并关闭编辑器,Git 将开始 rebase 过程,并可能会要求你解决任何合并冲突。然后,它会打开你的文本编辑器,让你编辑最终的提交消息。默认情况下,这会包含你压缩的所有原始提交消息。
-
完成 rebase 过程:
解决完所有冲突(如果有的话)并保存你的最终提交消息之后,你可以完成 rebase 过程。
-
推送更改到远端仓库(如果需要):
如果你已经将提交推送到了远端仓库,你可能需要使用
--force
参数来强制推送更改,但请注意,这可以覆盖远端仓库的历史,因此仅在确保不会影响他人工作的情况下使用。git push origin your-branch-name --force
通过这种方法,你可以将多个提交压缩成一个更整洁的提交,以保持项目历史的清晰。