gpt4 book ai didi

git - git filter-branch 删除大量文件

转载 作者:太空狗 更新时间:2023-10-29 12:47:39 24 4
gpt4 key购买 nike

我正在将存储库从 svn 迁移到 git。

在这最后一步中,我想从历史记录中删除大量不需要的文件。

我正在尝试以下命令:

git filter-branch --prune-empty --index-filter \
"for file in $(cat files); do git rm -rf --cached --ignore-unmatch ${file}; done" -f

但是它说参数列表太长。

我可以这样重写:

for file in $(cat files); do
git filter-branch --prune-empty --index-filter \
"git rm -rf --cached --ignore-unmatch ${file}" -f
done

但是它会运行 filter-branch 很多次,而且历史很长..所以,它会花费太多时间。

是否有更快的过滤分支删除大量文件的方法?

最佳答案

我建议使用 The BFG ,一个更简单、更快速的 git-filter-branch 替代方案,专门用于从 Git 历史记录中删除不需要的文件。

您在 your comment 中提到问题文件通常是大二进制文件,BFG 有一个特定的选项来处理这个问题 - 你应该仔细遵循 BFG 的 usage instructions ,但核心部分就是这样:

$ java -jar bfg.jar  --strip-blobs-bigger-than 10M  my-repo.git

任何大小超过 10MB 的文件(不在您的最新 提交中)将从您的 Git 存储库的历史记录中删除。然后你可以使用 git gc 清除死数据:

$ git gc --prune=now --aggressive

BFG 通常至少为 10-720x比运行 git-filter-branch 更快,而且通常更易于使用。

完全披露:我是 BFG Repo-Cleaner 的作者。

关于git - git filter-branch 删除大量文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17993505/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com