如何删除已从 git 历史记录中删除的文件夹?
在我的 git 存储库中,我有一个名为 /foo
的文件夹(大小为 1.2GB)。我已经用 rm -rf/foo
删除了文件夹 foo
因为我不再需要它了。在我想了很多其他的提交之后。为什么我的远程仓库这么大...我忘记执行 git rm --cached ...
而不是 rm -rf ...
。我现在如何从 git 历史记录中删除该文件夹?
git rm --cached/foo
将不起作用,因为该文件夹已在较早的提交中删除。
documentation涵盖从历史记录中清除文件的类似案例:
git filter-branch --index-filter 'git rm --cached --ignore-unmatch filename' HEAD
因为你要删除整个目录,将 -r
标志添加到 git rm
:
git filter-branch --index-filter \
'git rm -r --cached --ignore-unmatch path/to/directory' HEAD
请注意,对于较大的存储库,此操作将需要几分钟时间。
更重要的是,它将创建一个具有不同历史记录和校验和的新存储库。如果您之前发布了存储库,则新存储库的历史记录将与其他人提取的历史记录不兼容。