【发布时间】:2021-03-15 19:49:00
【问题描述】:
我正在尝试识别我的项目历史记录中已删除的大文件。当我这样做时,我可以看到一个有序列表。
$ git rev-list --objects --all \
| git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize) %(rest)' \
| sed -n 's/^blob //p' \
| sort --numeric-sort --key=2 \
| cut -c 42-
通常,我可以从历史记录中删除文件而不会出现这样的问题:
git filter-repo --force --invert-paths --path <path-to-file>
但是,如果一个文件在过去有不同的名称或路径,一旦我删除该文件,当我再次运行 rev-list 时,我会看到我刚刚删除的同一个文件,大小相同,但它过去的路径或名称不同。
有没有办法使用 rev-list 查看对象的所有文件路径,这样我就不必像这样在历史记录中迭代路径/名称更改?
【问题讨论】:
-
如果我不在一开始就切断对象ID,我想我可以在过滤器回购中使用它,并杀死文件的所有化身。但是,我看不到在命令行上指定对象 id 的方法,只能使用 --strip-blobs-with-ids 从文件中加载它
标签: git git-rev-list git-filter-repo