Git过滤器分支多个文件重写

问题描述

我有几个文件太大,无法提交到github,现在我不得不使用git filter分支重写历史记录。

我有大约4个文件大于100MB csv文件,我希望将其从历史记录中删除我有文件名:story_a002.csv,input_0019.csv,charlet.csv和model_892.csv

我知道我可以在下面使用此命令,但是我必须一次使用一次。重写完成后,我必须推送更改。不幸的是,因为我必须先全部重写它们,否则我将收到文件太大的github问题。

git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch <filename>

有没有一种方法可以链接链接,以便我可以重写一次并执行一次推送?

解决方法

首先,您可以考虑使用new git filter-repowill replace the old git filter-branch or BFG

它具有many usage examples,包括基于路径的过滤:

要保留除这些路径以外的所有文件,只需添加--invert-paths

git filter-repo --path aFileToRemove --invert-paths

尝试使用多路径(通过一个命令删除所有文件),然后强制推送。