首页/开发/Git 与协作速查/历史改写的风险与收尾清单
进阶与大仓实践69 条

历史改写的风险与收尾清单

重写会改变提交哈希并影响所有克隆、分支、标签与 CI 缓存;收尾至少包含:引用更新、reflog 过期、gc 清理与团队通知。

Git 与协作速查开发更新于 2026-10-12
影响面分支、标签、PR/MR 引用、镜像、CI 缓存、外部链接
清理git reflog expire --expire=now --all && git gc --prune=now
推送按仓库策略强推分支与标签,并通知所有人重新克隆或重置

收尾命令示例

收尾命令示例
git for-each-ref --format='%(refname)' refs/original/ | xargs -r -n1 git update-ref -d
git reflog expire --expire=now --all
git gc --prune=now
git push --force-with-lease --all
git push --force-with-lease --tags
在共享仓库操作前先冻结推送、发公告并约定时间窗;重写不是可低调完成的动作。

易错点

  • 忘记清理 reflog 与旧引用时对象仍可恢复,敏感内容并未真正消失
  • 只更新主分支而漏掉标签与镜像仓库,会留下旧历史的分发源

数据来源与参考

  • git-filter-repo 官方文档(重写后的清理步骤)
  • Git 官方文档:git-reflog(expire)
  • Git 官方文档:git-gc
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌