如果不小心放了私密的内容(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