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

标签 git

<分区>

如何删除已从 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

请注意,对于较大的存储库,此操作将需要几分钟时间。

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

关于git - 从 git 历史记录中删除已删除的文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21230090/

相关文章:

git - git reset 和 git revert 有什么区别?

git - git如何决定在git-svn中使用哪个版本的svn?

gitlab 运行器捕获错误 : no matching files

github PR 显示所有过去的提交

git - git 何时以及如何使用增量进行存储?

Git 错误 : stash or commit

git - 将 git 别名添加到 .bash_profile 不起作用

git - 如何让 git 忽略我的 csv 文件?

git - 撤销意外的 git stash pop

git - 删除了大文件,但 checkout 和 .pack 文件仍然很大