首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用BFG-repo-清洗机删除文件列表

用BFG-repo-清洗机删除文件列表
EN

Stack Overflow用户
提问于 2021-12-17 00:14:54
回答 1查看 660关注 0票数 3

由于部署问题,我们试图将git存储库缩小到500 to以下。

为了实现这一点,我们创建了一个新的分支,将所有旧的图像、视频和字体移到AWS S3中。

我可以很容易地获得git diff --name-only --diff-filter=D master -- public/assets/的文件列表。

现在,我已经尝试对每个文件运行BFG-回购清洁剂 1.14.0。但我有400个文件,需要很长时间才能单独删除每个文件(在我编写这个文件时仍在运行)。

git diff --name-only --diff-filter=D master -- public/assets/ | xargs -i basename '{}' | xargs -i bfg --delete-files '{}'

因为每个文件都是不同的,所以我不能像在使用bfg回购清洁器从多个分支删除多个文件中建议的那样使用glob模式。

我试图用逗号分隔每个文件,但这导致BFG-回购清洁剂告诉我:

BFG中止:没有参考更新-没有发现脏提交?

是否有一种方法可以向 BFG-回购清洁剂 提供多个文件,而不使用glob模式?

PS。我尝试使用多个文件的命令是:git diff --name-only --diff-filter=D master -- public/assets/ | xargs -i basename '{}' | sed -z 's/\n/,/g;s/,$/\n/' | xargs -i bfg --delete-files '{}' && git reflog expire --expire=now --all && git gc --prune=now --aggressive

PPS。bfg命令作为一个简单的bash脚本在我的路径上使用java -jar /tools/BFG-repo-cleaner/bfg-1.14.0.jar "$@"

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-17 00:26:38

但是我有400个文件,每个文件都需要很长的时间才能分别删除。

这就是为什么要使用的工具(基于python的)是newren/git-filter-repo (参见安装)。

这样,您就可以为该工具提供一个文件,其中包含文件列表:

代码语言:javascript
复制
git filter-repo --paths-from-file <filename> --invert-paths

来自文献资料

类似地,您可以使用--paths-from-file删除许多文件。 例如,您可以运行git filter-repo --analyze来获取报告,查看一个例如.git/filter-repo/analysis/path-deleted-sizes.txt,然后将所有文件名复制到一个文件中,比如/tmp/files-i-dont-want-anymore.txt,然后运行: git过滤器-回购-反转路径\-路径-从文件/tmp/文件-i-不想要-任何更.git 把它们全部删除。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70387071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档