这个尴尬的情况可能我们都遇到过,也许有办法,还也许没办法。
问题描述
来个典型场景:
项目开发,配置文件里有我们的数据库配置等机密内容,随着开发的进行,在很多次记录中都有配置文件的修改记录。
现在想把这个项目开源,但后果显然很可怕,别人通过我们的配置文件的提交记录就可以找到我们的数据库配置等机密信息。
我想要保留这些提交记录,但想要清理掉此关键文件的所有相关commit log,可行吗?如果可以,怎么办?
答案: 可行。
方法:
原理:对所有文件的commit log进行重写,排除掉某些文件即可。
命令如下:
git filter-branch -f --tree-filter 'rm -rf aaa/app.config' HEAD
当然,如果你还需要push到远端,就
git push origin --force