我不小心把一张 DVD 翻录到一个网站项目中,然后不小心git commit -a -m ...,然后,这个 repo 被 2.2 gigs 膨胀了。下次我进行了一些编辑,删除了视频文件,并提交了所有内容,但压缩文件仍然存在于存储库中,在历史记录中。
git commit -a -m ...
我知道我可以从这些提交开始分支并将一个分支重新定位到另一个分支。但是我应该怎么做才能合并 2 个提交,以便大文件不会显示在历史记录中并在垃圾收集过程中被清理?
为什么不使用这个简单而强大的命令呢?
git filter-branch --tree-filter 'rm -f DVD-rip' HEAD
该--tree-filter选项在每次签出项目后运行指定的命令,然后重新提交结果。在这种情况下,您从每个快照中删除一个名为 DVD-rip 的文件,无论它是否存在。
--tree-filter
如果您知道哪个提交引入了大文件(例如 35dsa2),则可以将 HEAD 替换为 35dsa2..HEAD 以避免重写太多历史记录,从而避免在尚未推送时出现分歧提交。@alpha_989 的这条评论似乎太重要了,不能在这里省略。
请参阅此链接。