我有一个使用Git版本控制的项目,想要开源,但其中包含了一些与原始环境相关的私人信息。我打算将这些信息更改为从未纳入代码库的配置文件中读取。我意识到最好在一开始就这样做,但既然私人信息仍存在于之前的提交中,我该如何从历史记录中删除它呢?我是要基于最新提交开始一个新的代码库并失去所有历史记录,还是有办法挽救当前的代码库并删除任何与私人信息有关的记录呢?
补充说明:我不想完全删除包含这些私人信息的文件,因为它们仍在使用。相反,我想删除/清空/更改其中某些字符串的出现。
我有一个使用Git版本控制的项目,想要开源,但其中包含了一些与原始环境相关的私人信息。我打算将这些信息更改为从未纳入代码库的配置文件中读取。我意识到最好在一开始就这样做,但既然私人信息仍存在于之前的提交中,我该如何从历史记录中删除它呢?我是要基于最新提交开始一个新的代码库并失去所有历史记录,还是有办法挽救当前的代码库并删除任何与私人信息有关的记录呢?
补充说明:我不想完全删除包含这些私人信息的文件,因为它们仍在使用。相反,我想删除/清空/更改其中某些字符串的出现。
git-filter-branch
。
使用说明提供了更详细的步骤,但核心部分只需下载BFG的jar(需要Java 8或更高版本)并运行此命令即可:$ java -jar bfg.jar --replace-text replacements.txt my-repo.git
replacements.txt
文件应包含您想要执行的所有替换,格式如下(每行一个条目 - 注意评论不应包括在内):
PASSWORD1 # Replace literal string 'PASSWORD1' with '***REMOVED***' (default)
PASSWORD2==>examplePass # replace with 'examplePass' instead
PASSWORD3==> # replace with the empty string
regex:password=\w+==>password= # Replace, using a regex
将扫描您的整个存储库历史记录,并对所有非二进制文件(大小不超过1MB)执行替换操作:任何匹配的字符串(不在您的最新提交中)都将被替换。
完全披露:我是BFG Repo-Cleaner的作者。