如何从 git 历史记录中删除不再存在的文件?
How can i remove files from git history that don't exist anymore?
几个月前我们已经从 SVN 更改为 GIT (bitbucket),现在我们收到一条警告,指出我们的 git 存储库正在变大(目前为 2.2GB)。但是,当我检查本地大小时,我们的项目大小只有 +- 600MB。这是一个已经开发了 6 年多的项目,所以有很多提交(历史),尤其是添加了 .jar viles 之类的文件,而不是删除以替换为更新版本等。它们在我们的网站上不存在不再是当前项目,但它们仍处于 git 历史记录中,它们占据了 space 不需要的部分,因为我们不会再使用它们,我正在寻找一种方法来删除所有删除当前项目中不存在的文件,并将它们从 git 提交历史记录中完全删除(不是所有被删除的文件)。我知道有 'git-filter' 命令可以从提交历史中删除一个文件,但据我所知,你必须指定要删除的文件,而我不知道有多少/哪个文件被删除了年在我们的项目中。
您可以使用命令git filter-branch
git filter-branch --index-filter \
'git rm -rf --cached --ignore-unmatch path_to_file' HEAD
小心,因为您会改写您的存款历史
几个月前我们已经从 SVN 更改为 GIT (bitbucket),现在我们收到一条警告,指出我们的 git 存储库正在变大(目前为 2.2GB)。但是,当我检查本地大小时,我们的项目大小只有 +- 600MB。这是一个已经开发了 6 年多的项目,所以有很多提交(历史),尤其是添加了 .jar viles 之类的文件,而不是删除以替换为更新版本等。它们在我们的网站上不存在不再是当前项目,但它们仍处于 git 历史记录中,它们占据了 space 不需要的部分,因为我们不会再使用它们,我正在寻找一种方法来删除所有删除当前项目中不存在的文件,并将它们从 git 提交历史记录中完全删除(不是所有被删除的文件)。我知道有 'git-filter' 命令可以从提交历史中删除一个文件,但据我所知,你必须指定要删除的文件,而我不知道有多少/哪个文件被删除了年在我们的项目中。
您可以使用命令git filter-branch
git filter-branch --index-filter \
'git rm -rf --cached --ignore-unmatch path_to_file' HEAD
小心,因为您会改写您的存款历史