[git] 将多次提交压缩成一次提交【热度: 412】

关键词:多次提交压缩成一次提交

将多次提交压缩成一次提交在 Git 中被称为“squash”。这通常在你完成一段工作后,想要将这段时间内的多个提交整理为一个更干净、更整洁的提交记录时使用。Git 提供了几种方法来实现提交的压缩,最常用的是通过 git rebase 命令配合交互模式(interactive mode)来实现。

使用 git rebase -i 进行交互式压缩

假设你想压缩最近的 N 次提交。首先,你需要确定从哪个提交开始进行操作。可以通过 git log 查看提交历史,然后选择你想要压缩的提交的前一个提交作为起点。

  1. 启动交互式 rebase 会话:

    git rebase -i HEAD~N

    其中 N 是你想要压缩的提交数量。例如,如果你想要压缩最近的 3 次提交,你应该使用 git rebase -i HEAD~3。

  2. 编辑 rebase 会话中出现的命令列表:

    执行上述命令后,你的默认文本编辑器会打开一个带有待压缩提交列表的文件。这些提交被列出来,前面默认是 pick 命令。

    pick e3a1b35 第一次提交的消息
    pick 7ac9a67 第二次提交的消息
    pick 1d2a3f4 第三次提交的消息
    

    将除了第一个提交之外的所有 pick 命令改为 squash 或简写 s,表示这些提交将被压缩到前一个提交中。

    pick e3a1b35 第一次提交的消息
    squash 7ac9a67 第二次提交的消息
    squash 1d2a3f4 第三次提交的消息
    
  3. 保存并退出编辑器:

    一旦保存并关闭编辑器,Git 将开始 rebase 过程,并可能会要求你解决任何合并冲突。然后,它会打开你的文本编辑器,让你编辑最终的提交消息。默认情况下,这会包含你压缩的所有原始提交消息。

  4. 完成 rebase 过程:

    解决完所有冲突(如果有的话)并保存你的最终提交消息之后,你可以完成 rebase 过程。

  5. 推送更改到远端仓库(如果需要):

    如果你已经将提交推送到了远端仓库,你可能需要使用 --force 参数来强制推送更改,但请注意,这可以覆盖远端仓库的历史,因此仅在确保不会影响他人工作的情况下使用。

    git push origin your-branch-name --force

通过这种方法,你可以将多个提交压缩成一个更整洁的提交,以保持项目历史的清晰。