如何删除已从git历史记录中删除的文件夹?
在我的git存储库中,我有一个名为/foo(1.2GB大小)的文件夹.我删除了beause 的文件夹foo,rm -rf /foo我不再需要了.经过许多其他提交,我想.为什么我的远程回购如此之大......我忘了做git rm --cached ...而不是做rm -rf ....我现在如何从git历史记录中删除该文件夹?
git rm --cached /foo 将无法正常工作,因为该文件夹已在先前的提交中删除.
use*_*342 26
该文档涵盖了从历史记录中清除文件的类似情况:
git filter-branch --index-filter 'git rm --cached --ignore-unmatch filename' HEAD
Run Code Online (Sandbox Code Playgroud)
由于您要删除整个目录,请将-r标志添加到git rm:
git filter-branch --index-filter \
'git rm -r --cached --ignore-unmatch path/to/directory' HEAD
Run Code Online (Sandbox Code Playgroud)
请注意,此操作将在较大的存储库上花费几分钟.
更重要的是,它将创建一个具有不同历史和校验和的新存储库.如果您之前发布了存储库,则新存储库的历史记录将与其他人提取的历史记录不兼容.