git filter-branch 没有删除我的目录
git filter-branch is not removing my directory
我的 git 存储库顶部有一个 incubator
目录,我想将其从历史记录中完全删除。我试过:
git filter-branch --force --tree-filter "rm -rf incubator/" --prune-empty HEAD
并且:
git filter-branch --force --index-filter "git rm --cached -r -f --ignore-unmatch incubator" --prune-empty
但其中 none 有效。
我是不是做错了什么?有没有办法让我看到发生了什么或者为什么这个目录没有被删除?
重写 Git 历史是一个棘手的过程,git-filter-branch
并不容易(见下文),因此请改用 the BFG,一种比 [= 更简单、更快速的替代方法12=],专门用于从 Git 历史记录中删除不需要的文件。
认真跟BFG的usage instructions - 核心部分就是这样:
$ java -jar bfg.jar --delete-folders incubator my-repo.git
任何名为 incubator
的文件夹(不在您的 最新 提交中)将从您的 Git 存储库的历史记录中删除。然后您可以使用 git gc
清除死数据:
$ git gc --prune=now --aggressive
BFG 通常至少 10-720x 比 运行 git-filter-branch
快,并且通常更易于使用。
...正在诊断 git 过滤器分支故障?
因为(如上所述)重写 Git 历史是一项复杂的工作,有 很多 种方法可能出错,所以您可能需要添加更多详细说明您在问题中说 "But none of them worked" 的位置。您使用的 git filter-branch
咒语看起来会做 某事 - 它会从您的 master 分支中删除 incubator
文件夹 - 它至少做到了吗?也许您希望它从其他分支中删除,在这种情况下您需要添加 --all
标志,或者您可能希望它也从标记的提交中删除,这需要 --tag-name-filter cat
。更多详情:
很多事情都可能出错,如果可以的话,你最好使用 BFG。
完全披露:我是 BFG Repo-Cleaner 的作者。
我的 git 存储库顶部有一个 incubator
目录,我想将其从历史记录中完全删除。我试过:
git filter-branch --force --tree-filter "rm -rf incubator/" --prune-empty HEAD
并且:
git filter-branch --force --index-filter "git rm --cached -r -f --ignore-unmatch incubator" --prune-empty
但其中 none 有效。
我是不是做错了什么?有没有办法让我看到发生了什么或者为什么这个目录没有被删除?
重写 Git 历史是一个棘手的过程,git-filter-branch
并不容易(见下文),因此请改用 the BFG,一种比 [= 更简单、更快速的替代方法12=],专门用于从 Git 历史记录中删除不需要的文件。
认真跟BFG的usage instructions - 核心部分就是这样:
$ java -jar bfg.jar --delete-folders incubator my-repo.git
任何名为 incubator
的文件夹(不在您的 最新 提交中)将从您的 Git 存储库的历史记录中删除。然后您可以使用 git gc
清除死数据:
$ git gc --prune=now --aggressive
BFG 通常至少 10-720x 比 运行 git-filter-branch
快,并且通常更易于使用。
...正在诊断 git 过滤器分支故障?
因为(如上所述)重写 Git 历史是一项复杂的工作,有 很多 种方法可能出错,所以您可能需要添加更多详细说明您在问题中说 "But none of them worked" 的位置。您使用的 git filter-branch
咒语看起来会做 某事 - 它会从您的 master 分支中删除 incubator
文件夹 - 它至少做到了吗?也许您希望它从其他分支中删除,在这种情况下您需要添加 --all
标志,或者您可能希望它也从标记的提交中删除,这需要 --tag-name-filter cat
。更多详情:
很多事情都可能出错,如果可以的话,你最好使用 BFG。
完全披露:我是 BFG Repo-Cleaner 的作者。