Git & GitHub Professional Workflow · 课时

使用 git filter-repo 重写历史

学习如何使用 git filter-repo 大规模重写仓库历史,以删除大型文件或敏感数据。

第 4 / 4 课13 个步骤

使用 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 反馈 — 无需本地设置。

此课程中的所有课时

  1. Git Reflog 与恢复历史
  2. 使用 Git Bisect 调试
  3. 仓库维护与清理
  4. 使用 git filter-repo 重写历史
← 返回 Git & GitHub Professional Workflow