Git永久删除文件,可以将git仓库中的私密信息删除,如密码、私钥等信息
永久删除文件
要删除的文件是id_rsa
,运行如下命令:
git filter-branch --force --index-filter \
'git rm --cached --ignore-unmatch id_rsa' \
--prune-empty --tag-name-filter cat -- --all
参数说明:
filter-branch
是让git
重写每一个分支--force
假如遇到冲突也让git
强制执行--index-filter
选项指定重写的时候应该执行什么命令,要执行的命令紧跟在它的后面,在这里就是git rm --cached --ignore-unmatch id_rsa
,让git删除掉缓存的文件,如果有匹配的--prune-empty
如果因为重写导致某些commit变成了空(比如修改的文件全部被删除),忽略掉这个commit--tag-name-filter
表示对每一个tag如何重命名,重命名的命令紧跟在后面,当前的tag名会从标注输入送给后面的命令,用cat就表示保持tag名不变。--
表示分割符--all
表示对所有的文件都考虑在内。
已经commit
到git
仓库,再运行如下命令永久删除远端上的文件:
git push --all --force