2026-08-02
今日主题
- Git 含合并历史的重写
新增认知
Git 含合并历史的重写
-
先判断保留对象:历史整理前要先区分目标是保留 merge 拓扑,还是只保留最终文件状态。前者适合交互式 rebase 的保留合并模式;
后者若还要跨分支、跨提交重新按主题分组,直接从共同基线重建提交通常更清晰。 -
重建优于硬编排:普通交互式 rebase 会把历史线性化;保留合并模式虽能表示 merge,却引入 label、reset、merge 等拓扑指令。
当前提是无需保留原分叉结构、且原提交内容彼此交叉时,把累计改动还原到工作区后重新分组,比在复杂 todo 中拆分和排序更可控。 -
内容身份可验证:提交历史重写会改变 commit hash,但不应意外改变最终内容。可在操作前创建恢复引用,
并比较重写前后 tree hash、执行零差异检查;只有 tree 完全一致,才能证明此次拍平改变的是历史组织方式,而不是仓库内容。