有时候,我们需要删除 git 历史记录中的某个文件。
有种情况是在你开发一个项目的时候,刚开始是闭源的,里面可能包含一些比较敏感的信息,用户名和密码等,后来想将这个项目开源了,但这些用户名和密码的配置文件已经存在于 git 历史中。
或者错误的将某个与项目无关的大文件提交了,致使整个 git 历史文件变得非正常的大。
这时候就需要用到这个功能。
1、备份要删除的文件
2、切换到相应的commit: git checkout a83afd20fc5fd792945fd4c6dd447f4f9e32b4b5
3、删除文件:git filter-branch -f --index-filter "git rm -rf --cached --ignore-unmatch kettle-increment/tr_load.ktr" HEAD
4、拷贝需要提交的文件到相应位置
5、强制覆盖git记录:git push origin --force --all