从git历史记录中删除已删除的文件夹

时间:2014-01-20 09:16:22

标签: git

如何删除已从git历史记录中删除的文件夹?

在我的git存储库中,我有一个名为/foo的文件夹(大小为1.2GB)。我已将文件夹foorm -rf /foo一起删除,因为我不再需要它了。经过许多其他提交,我想。为什么我的远程仓库如此之大......我忘记了git rm --cached ...而不是rm -rf ...。我现在如何从git历史记录中删除该文件夹?

git rm --cached /foo将无效,因为该文件夹已在先前的提交中删除。

1 个答案:

答案 0 :(得分:26)

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

请注意,此操作在较大的存储库上需要几分钟。

更重要的是,它将创建一个具有不同历史记录和校验和的新存储库。如果您之前发布了您的存储库,则新存储库的历史记录将与其他人提取的历史记录不兼容。

相关问题