从前几次提交中删除大文件(在 git 中)

Gen*_*tsu 7 git commit

我已经对我的代码库进行了几次本地提交,并尝试将其推送到我的 repo,但是有相当多的大文件。我只是有点放弃,继续工作,进行本地提交。我现在已经删除了大文件,并再次提交,但它仍然试图推送原始大文件。在我最初提交它们以忽略超过 50mb 的任何文件后,我尝试添加一个 gitignore,但无济于事。

有任何想法吗?

小智 12

在此处阅读有关过滤器分支的信息。

有人不小心用一个粗心的 git add . 提交了一个巨大的二进制文件,你想把它到处删除。也许您不小心提交了一个包含密码的文件,并且您想让您的项目开源。filter-branch 是您可能想用来清理整个历史记录的工具。要从整个历史记录中删除名为 passwords.txt 的文件,您可以使用 --tree-filter 选项来过滤分支:

$ git filter-branch --tree-filter 'rm -f passwords.txt' HEAD
Rewrite 6b9b3cf04e7c5686a9cb838c3f36a8cb6a0fc2bd (21/21)
Ref 'refs/heads/master' was rewritten
Run Code Online (Sandbox Code Playgroud)

您还可以在提交这些文件的点对您的分支进行交互式 rebase,然后从该提交中删除它们。上面的链接也解释了这一点,但基本上:

git rebase -i HEAD~X
Run Code Online (Sandbox Code Playgroud)

将允许您编辑最后的 X 次提交。