前言
当日常代码提交时,不小心把敏感信息提交上去后,再进行删除操作,虽然文件在代码中已删除,但还是可通过提交历史查看到敏感信息。
背景
例如在历史很久之前的某一次提交中,把敏感信息(账号密码等)提交上去。
发现后立马修改源代码,将里边的敏感信息删除,删除后查看该文件历史操作记录,包含敏感信息历史commit仍存在,点击还是可查看到敏感信息。
为了不让敏感信息泄露,可通过以下方法清除隐患。
方法
1. 删除指定文件或目录,提交
git filter-branch --tree-filter 'rm -rf src/Info' HEAD
2. 强制覆盖
git push -f
如果push失败,前往git库->settings->protected Branches修改,去除保护,再重新执行第二步操作。(去除成功后,务必记得修改回来)
3. 去除成功
执行完以上两步操作,不管是代码还是历史操作记录,src/Info 目录下的敏感信息,将无法再获取到。
总结
当敏感信息不小心提交到远程,如果只是单纯的文件删除操作,还是可通过历史操作记录查看,很容易产生安全隐患,落入不法分子,后果将不堪设想。通过以上方法,能彻底将敏感信息相关的信息记录删除,有效的解决安全问题。
该方法仅限用于,从git 历史中完全删除某个文件或文件夹,如果敏感信息在某个文件中,是否无法对文件内容进行修改的。
特别说明:当使用git push -f
强制推送修改后,如有其他协作人,需要重新 clone 代码,否则在进行代码推送时会出现问题。