[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

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