如何删除在git中错误提交的大文件

可能重复:
如何从Git中的提交历史清除一个巨大的文件?

我做了一件愚蠢的事情。 想象一下,我犯了一个100MB的文件。 比我看到这个,删除这个文件,并再次提交。 这是删除文件的正常程序。

但现在副作用是我的历史很沉重,因为它保存了这个大文件(我相信这就是为什么它很重)。 我只使用本地git,所以我不同步在任何服务器。

我如何明确地删除这个文件并节省磁盘空间?

你可以使用git filter-branch命令来完成,如下所示:

 git filter-branch --tree-filter 'rm -rf path/to/your/file' HEAD 

你可以在这里find更多的文档http://dalibornasevic.com/posts/2-permanently-remove-files-and-folders-from-a-git-repository

您正在查找的命令是filter-branch 。 它允许你永久删除登记中的文件。 这个博客有一个很好的教程,如何从存储库中删除有问题的文件

你可以从David Underhill那里拿这个伟大的脚本从git仓库中删除这个文件:

 #!/bin/bash set -o errexit # Author: David Underhill # Script to permanently delete files/folders from your git repository. To use # it, cd to your repository's root and then run the script with a list of paths # you want to delete, eg, git-delete-history path1 path2 if [ $# -eq 0 ]; then exit 0 fi # make sure we're at the root of git repo if [ ! -d .git ]; then echo "Error: must run this script from the root of a git repository" exit 1 fi # remove all paths passed as arguments from the history of the repo files=$@ git filter-branch --index-filter "git rm -rf --cached --ignore-unmatch $files" HEAD # remove the temporary history git-filter-branch otherwise leaves behind for a long time rm -rf .git/refs/original/ && git reflog expire --all && git gc --aggressive --prune