git删除某个文件的所有历史commit

场景
之前该仓库为private,现在想要改为public可见,那么需要删除某些隐私文件以及其所有相关的历史commit。

例如需要删除yarn.lock文件:
仅删除yarn.lock并push是不对的,因为其他用户可以在commit中找到它。

我们需要删除yarn.lock以及yarn.lock所有commit记录。

git命令

1
2
git filter-branch -f --tree-filter 'rm -rf yarn.lock' HEAD
git push origin -f