仅在某次提交后从git历史中删除文件

kkbh8khc  于 2023-05-05  发布在  Git
关注(0)|答案(1)|浏览(175)

有一些工具,比如git filter-repo,可以从整个git历史中删除一个文件,就像它从来不存在一样。
是否可以从git历史中删除一个文件,但只能在某个提交之后?假设我想保留文件的最初100个版本,但从版本101-200开始,我想从存储库中删除它。

waxmsbnn

waxmsbnn1#

正如@legec上面所建议的,使用git-filter-repo在某次提交后删除文件的语法是:

git-filter-repo --path "path/to/file" --invert-paths --refs c`3c1a385123eb3bf978de3bee99d2101ea26521a..HEAD

(用你想保留的初始提交替换c3 c1 a385123 eb 3bf 978 de 3bee 99 d2101 ea 26521 a,所以如果你想从某个文件夹中删除一个文件,你必须在那之前选择一个提交)
从整个历史中删除文件的简单语法是:

git-filter-repo --replace-refs delete-no-add --path "path/to/file" --invert-paths

如果要使用通配符,请将--path替换为--path-glob

git-filter-repo --replace-refs delete-no-add --path-glob "path/to/fi*" --invert-paths

免责声明:这是一个危险的操作,它可以轻易地删除你的仓库。例如,在一次操作中忘记“--invert-paths”将删除所有内容,只保留您想要删除的文件。如果其他用户有活跃的分支等,这也会使事情复杂化。

相关问题