我最近注意到我不小心提交了一个.env
包含敏感信息的文件。我最好的猜测是,当 Webstorm 询问我是否要将文件添加到 git 时,我不小心单击了确定,因为它是.gitignore
在创建后立即添加到文件中的。我没有注意到这个文件连续几周被推送到 VCS。我立即运行git rm --cached .env
并使用了BFG-Repo Cleaner从我的版本历史记录中清除文件。问题是,虽然 BFG-Repo Cleaner 完成了它的工作(虽然奇怪的是,现在每个提交都是重复的),并且该文件在我的提交历史记录中不再存在,但我实际删除文件的提交显示了删除的确切内容,即密码和密钥。这是运行 BFG-Repo Cleaner 的常见结果吗?如果是这样,我怎样才能从历史记录中删除该提交而不会丢失此后所做的任何提交?我能找到的大多数答案都是指使用git reset --hard
恢复到我想要摆脱的提交之前的提交,但我不希望在那之后失去我的工作。
我只是觉得奇怪的是,设计用于从版本历史记录中删除敏感数据的工具仍然会显示删除敏感数据diff
的提交。
我使用了 BFG-Repo-Cleaner,因为它似乎是一个更简单的替代方案git-filter-branch
,但是现在是否有一个用例可以git-filter-branch
在这里使用,不是删除文件,而是删除显示我删除的文件内容的提交?