使用 git filter-repo 重写历史
学习如何使用 git filter-repo 大规模重写仓库历史,以删除大型文件或敏感数据。
使用 git filter-repo 重写历史 是 CoddyKit 上的免费 Git & GitHub Professional Workflow 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Git & GitHub Professional Workflow 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Git & GitHub Professional Workflow 课程共包含 4 节课。
为什么要重写历史
有时您必须重写仓库的完整历史:移除泄露的密码、删除意外提交的大型文件,或修正所有提交中的作者电子邮件地址。
认识历史筛选工具
历史筛选工具是一款现代且快速的历史重写工具,用来替代旧式且缓慢的 git filter-branch。
安装工具
它是一个独立程序,通常通过 Python 包安装器或包管理器安装。
pip install git-filter-repo始终在克隆副本上操作
重写历史具有破坏性。请在全新克隆副本上操作,这样出现问题时可以直接丢弃该副本。
git clone --mirror git@github.com:you/repo.git从历史中移除文件
要从每个提交中彻底移除某个文件,请使用 --path 和 --invert-paths 选项。
git filter-repo --path secrets.env --invert-paths移除大型数据块
您可以删除超过大小阈值的文件,以缩小过度膨胀的仓库。
git filter-repo --strip-blobs-bigger-than 10M重写作者电子邮件地址
使用邮件映射文件或回调,修正所有提交中的错误作者电子邮件地址。
git filter-repo --mailmap my-mailmap.txt替换历史中的文本
使用表达式文件,清除密钥字符串在各处留下的痕迹。
git filter-repo --replace-text expressions.txt提交哈希会改变
重写历史会为所有受影响的内容生成新的提交哈希。仓库的历史会与任何旧副本产生分歧。
强制推送结果
重写后,您必须强制推送,因为远程历史已不再匹配。
git push --force --all与团队协调
由于每个人的克隆副本现在都已过时,团队成员必须重新克隆。请宣布重写操作,避免已移除的数据再次出现。
快速检查
测试您对历史重写的理解。
回顾
您学会了如何重写历史:
git filter-repo可以替代 filter-branch- 从完整历史中移除文件、大型数据块或密钥文本
- 始终在克隆副本上操作;提交哈希会改变
- 之后强制推送,并让团队重新克隆
用 AI 导师学习 Git & GitHub Professional Workflow — 免费
在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。
- 课程
- 12
- 课程
- 48
常见问题解答
「使用 git filter-repo 重写历史」课时是免费的吗?
是的 — 「使用 git filter-repo 重写历史」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Git & GitHub Professional Workflow 课程的其余内容,请升级到 CoddyKit PRO。 Git & GitHub Professional Workflow 课程共包含 4 节课。
「使用 git filter-repo 重写历史」这节课中我会学到什么?
学习如何使用 git filter-repo 大规模重写仓库历史,以删除大型文件或敏感数据。 你通过在浏览器中直接运行的动手代码来练习 Git & GitHub Professional Workflow,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Git & GitHub Professional Workflow 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Git & GitHub Professional Workflow 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「使用 git filter-repo 重写历史」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Git & GitHub Professional Workflow 课中编写并运行代码吗?
能。每节 Git & GitHub Professional Workflow 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- Git Reflog 与恢复历史
- 使用 Git Bisect 调试
- 仓库维护与清理
- 使用 git filter-repo 重写历史