首页/开发/Git 与协作速查/git commit --squash 生成待合并提交
合并变基与冲突71 条

git commit --squash 生成待合并提交

与 --fixup 类似但保留信息:生成 squash! 前缀提交,autosquash 时折叠到目标提交并打开编辑器合并两条信息。

Git 与协作速查开发更新于 2026-10-13

生成待折叠的提交

与自动折叠的修正提交类似,但会保留信息:生成一条带特殊前缀的提交,交互式变基时自动折叠到目标提交上,并打开编辑器让你合并两条提交信息。它适合为某个提交补充说明的补丁。

基本信息

用途为某个提交补充说明的补丁提交
用法指定目标提交生成带特殊前缀的提交
折叠效果自动重排到目标提交之后并进入编辑器整理信息
与修正提交的区别折叠时会打开编辑器让你合并两条信息
配套开关交互式变基时启用自动折叠

典型使用场景

  • 补充说明某个改动的背景与原因
  • 给评审意见留下可追溯的回应
  • 把「后来又发现的细节」并入原提交
  • 整理历史时保留中间的思考过程
  • 需要合并两条提交信息而不是直接丢弃一条

常用示例

常用示例
git commit --squash a1b2c3                  # 生成带特殊前缀的待折叠提交
git rebase -i --autosquash origin/main      # 自动折叠并打开编辑器
# 在编辑器里整理两条提交信息,保留有价值的说明
git log --oneline -5                        # 核对折叠后的历史
git rebase --abort                          # 折叠结果不满意时退回

两种折叠方式

方式提交信息处理适用情况
修正方式丢弃补丁提交的信息只是想并入改动
补充说明方式打开编辑器合并两条信息需要保留补充说明
手动压缩完全由自己整理信息对信息要求很高的场景
需要保留补充内容的说明时用它;只是想并入改动而不在意描述时,用丢弃信息的修正方式更省事。
折叠时会打开编辑器,无人值守的脚本里要提前设置好编辑器环境,否则流程会一直等待输入。
两条信息合并后可能变长,整理时保留对后来者有价值的部分即可。
目标提交必须是当前分支上可达的提交,写错目标会导致折叠失败。

易错点

  • 折叠时打开编辑器,脚本环境没有配置好编辑器,流程卡在等待输入上
  • 两条提交信息合并后冗长冗余,读者抓不到重点,整理时应删掉重复描述
  • 目标提交写错或不可达,折叠时找不到对应提交导致整个变基失败
  • 在已共享的分支上折叠,其他人的历史与主干分叉,需要重新推送并通知

数据来源与参考

  • Git 官方文档:git-commit(--squash)
  • Git 官方文档:git-rebase(--autosquash)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌