Git 提交合并(Squash)操作复盘总结
✅ 场景目标
把某个提交(如
6fc6e37)及其之后的所有提交合并成一条提交,保留历史,简化 log。
🧭 思路总览
Git 只能按提交拓扑结构操作,不能直接按时间合并。正确做法如下:
✅ 操作步骤
1️⃣ 找到合并起点的前一个提交
- 用
git log --oneline --date=iso或git log --graph找到目标提交(如6fc6e37)的前一个提交(如8d1bacb)。
2️⃣ 切换到目标分支
|
|
3️⃣ 软重置到前一个提交
|
|
- 这样会把从
6fc6e37开始到最新的所有更改变成未提交状态。
4️⃣ 新建一个合并提交
|
|
- 可以整理多个提交说明合并进 message。
5️⃣ 强推远程(如已推送过)
|
|
🧼 效果验证
git log --oneline检查历史是否简化git log --graph检查提交结构git status检查无未提交内容
⚠️ 注意事项
| 项目 | 注意点 |
|---|---|
| 重写历史 | 一定会改变 Git 提交 ID,不可逆 |
| 多人协作 | 强推前要先告知团队,避免他人拉取冲突 |
| 推荐备份 | 操作前创建备份分支:git checkout -b backup-before-squash |
🧠 总结口诀
🔁 找前一条 → 软重置 → 合新提交 → 强推远端
「软回起点,合为一弹,历史整洁,强推不慌」
如需自动化脚本或
.sh工具,可随时告知!