我有一个使用 Git 进行版本控制的项目,我想将其开源,但其中包含一些特定于其最初使用环境的私人信息。我将更改相关信息以从未包含在存储库中的配置文件加载。我意识到我应该首先这样做,但由于私人信息仍然存在于之前的提交中,我该如何将其从我的历史记录中删除呢?我是否只需要根据最新提交启动一个新存储库并丢失所有历史记录,或者是否有办法在删除任何私人信息记录的同时挽救当前存储库?
编辑:澄清一下,我不想完全删除包含此私人信息的文件,因为它们仍在使用。相反,我想删除/删除/更改其中某些字符串的出现。
我建议使用BFG 回购清理器 http://rtyley.github.com/bfg-repo-cleaner/,一个更简单、更快的替代方案git-filter-branch
专为从 Git 存储库中删除私有数据而设计。
The 使用说明 http://rtyley.github.com/bfg-repo-cleaner/#usage更详细地给出步骤,但核心位只是:下载BFG的罐子 http://rtyley.github.com/bfg-repo-cleaner/#download(需要 Java 8 或更高版本)并运行以下命令:
$ java -jar bfg.jar --replace-text replacements.txt my-repo.git
The 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)将执行替换:任何匹配的字符串(不在您的文件中)latestcommit) 将被替换。
全面披露:我是 BFG Repo-Cleaner 的作者。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)