You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对比执行git filter-branch前后的Git仓库差异?

校验git filter-branch修改后的历史差异方法
  • 对比所有分支的提交拓扑与元数据
    先将原仓库作为远程源添加到修改后的新仓库中:执行git remote add old-repo /path/to/your/original/repository,再执行git fetch old-repo拉取原仓库的所有分支、标签引用。
    之后可以通过git log --oneline --graph分别查看新旧同名分支的提交线,确认提交拓扑没有出现断裂、丢失、多余提交的问题。如果需要批量校验,可以通过git for-each-ref遍历所有分支,导出每个分支的提交元数据(排除你要修改的字段,比如修改作者邮箱时就排除邮箱字段),直接对比两份导出结果即可快速发现异常。
  • 逐提交校验变更内容
    使用git range-diff命令可以直接对比两条提交序列的逐提交差异,用法示例为git range-diff old-repo/main~20..old-repo/main main~20..main,输出会明确标注两个序列中每个提交的改动差异,你可以直接确认每个提交的修改是否仅包含你预期的内容,没有额外误改。
    如果需要覆盖全部分支,可以写简单脚本遍历所有新旧同名分支批量执行range-diff,排查异常。
  • 校验所有引用的最终状态一致性
    你已经可以通过递归diff校验工作区的最终状态,还可以通过树哈希快速校验所有分支、标签的顶端文件状态:对每个同名分支,分别执行git rev-parse <branch-name>^{tree}获取新旧仓库该分支顶端的树哈希值,若两个值完全一致,说明该分支的最终文件状态没有任何意外改动。如果你的filter-branch操作不涉及修改最终文件内容,所有分支的树哈希都应该和原仓库完全一致。

内容的提问来源于stack exchange,提问作者Wassinger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 07:54:08