从Git历史记录中删除敏感文件及其提交
我想在GitHub上放置一个Git项目,但它包含某些包含敏感数据的文件(用户名和密码,例如Capistrano的/config/deploy.rb)。 我知道我可以将这些文件名添加到 .gitignore ,但这不会删除它们在Git中的历史记录。 我也不想通过删除/.git目录重新开始。 有没有一种方法可以删除您Git历史记录中特定文件的 所有 痕迹? #1楼 更改密码是一个好主意,但是对于从存储库历史记录中删除密码的过程,我建议使用 BFG Repo-Cleaner ,它是 git-filter-branch 一种更快,更简单的替代方法,明确地设计用于从Git存储库中删除私有数据。 创建一个 private.txt 文件,列出要删除的密码等(每行一个),然后运行以下命令: $ java -jar bfg.jar --replace-text private.txt my-repo.git 存储库历史记录中所有阈值大小(默认为1MB以下)的文件都将被扫描,并且所有匹配的字符串(不在您的 最新 提交中)都将替换为字符串“ *** REMOVED ***”。 然后,您可以使用 git gc 清除失效的数据: $ git gc --prune=now --aggressive BFG通常比运行 git-filter-branch 快10至50倍,并且针对以下两种常见用例简化并定制了选项: