如何清理误提交到git的历史大文件? - 程序设计实验室
💡
原文中文,约2700字,阅读约需7分钟。
📝
内容提要
作者重构了视频剪辑工具Clipify的界面并开发新功能,决定从WinForms + Blazor迁移到MAUI以实现跨平台。在此过程中,使用git-filter-repo工具删除静态资源历史,显著减小仓库大小并加快推送速度。同时,介绍了使用git-sizer分析Git提交历史中的大文件。
🎯
关键要点
- 作者重构了视频剪辑工具Clipify的界面并开发新功能。
- 决定从WinForms + Blazor迁移到MAUI以实现跨平台。
- 迁移过程中遇到静态资源提交导致git push变慢。
- 使用git原生命令无法解决历史提交中已跟踪文件的问题。
- 引入git-filter-repo工具来重写Git历史记录,彻底删除指定路径的文件。
- 使用git-sizer工具分析Git提交历史中的大文件,帮助优化仓库大小。
❓
延伸问答
如何使用git-filter-repo工具清理Git历史中的大文件?
可以使用命令 git filter-repo --path <文件路径> --invert-paths --force 来彻底删除历史中与该路径相关的文件和提交记录。
为什么git rm --cached命令无法解决历史提交中的大文件问题?
因为git rm --cached只会从当前提交中移除文件的跟踪,不会修改过去的提交记录,历史上已跟踪的文件仍然保留在对象数据库中。
如何分析Git提交历史中的大文件?
可以使用git-sizer工具,通过在项目根目录下执行git-sizer命令,来分析Git仓库的大小和提交体积等信息。
Clipify项目迁移到MAUI的原因是什么?
因为WinForms不能跨平台,作者希望实现跨平台功能,因此决定迁移到MAUI。
使用git-filter-repo后,仓库的推送速度有什么变化?
使用git-filter-repo重写Git历史后,仓库大小明显减小,git push的速度显著提高。
如何安装git-filter-repo和git-sizer工具?
可以通过brew install git-filter-repo(macOS)或scoop install git-filter-repo(Windows)安装git-filter-repo,git-sizer同样可以使用相似的命令安装。
➡️