在所有节点删除一个文件

Last edited
Last updated July 5, 2023
Pages
Tags
如果不小心放了私密的内容(Token之类的)到公开的仓库中,只是简单删除文件是不够,因为它很可能保存在历史中。这里记录一下怎么删除一个文件(包含所有历史节点)。
 
首先,同步你的代码 git pull ,防止冲突解决变得更加麻烦。
 
然后,假如要删除的文件为 ioctl3/test2 这个文件,在仓库根目录(也就是 .git 文件夹所在目录),执行如下的命令:
git filter-branch --tree-filter 'rm -rf ioctl3/test2' --prune-empty HEAD
等待 git 在历史中搜索并删除文件。
 
然后,清理仓库释放本地空间:
git reflog expire --expire=now --all git gc --aggressive --prune=now
 
最后,推送到云端仓库(需要使用 -f 进行强制推送):
git push -f origin driver:driver