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

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

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

有任何想法吗?

答案1

这里关于过滤分支。

有人不小心用不经意的 git add . 提交了一个巨大的二进制文件,而你想从任何地方删除它。也许你不小心提交了一个包含密码的文件,而你想让你的项目开源。filter-branch 是你可能想要用来清除整个历史记录的工具。要从整个历史记录中删除名为 passwords.txt 的文件,你可以使用 filter-branch 的 --tree-filter 选项:

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

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

git rebase -i HEAD~X

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

相关内容