use*_*547 1 git security encryption
我将为一个项目招募一些开发人员.如果可能的话,我想继续使用git repo,但我不想让历史记录的一部分可访问(通过加密),所以只有我才能接受它.原因是我在头脑中清理了某些专有信息,例如我在开发过程中硬编码到应用程序中的帐户密码.如果没有某种形式的身份验证,我不希望任何其他开发人员看到这一点.
显而易见的解决方案是从头开始创建一个新的回购,但是如果可能的话我想保留完整的历史记录,因为它有我可能想要在路上使用的分支.
如果是Git存储库,你不能只隐藏历史的一部分; 由于Git的工作方式,每次提交包括先前提交的哈希,为了使用Git存储库,您需要拥有完整的历史记录.
但是,您有几个选择.一种方法是使用当前内容启动一个新的存储库,并保留旧的存储库.然后,您可以将需要访问旧历史记录的任何人提供给旧存储库.您仍然可以在两个存储库中查看完整历史记录.您可以通过为旧的和新的每个添加远程数据来执行此操作,然后使用git replace将旧存储库的最后一次提交附加到新的第一次提交.有关详细信息,请参阅此问题的答案.
另一种选择是过滤历史.您可以使用git filter-branch --tree-filter在历史记录中的每个提交上运行脚本,用"password"替换密码的所有实例.这将保留完整的历史记录,但所有提交都将获得新的提交ID.有关详细信息,请参阅此问题的答案.
这两个选项都可以让您保留完整的历史记录,同时不会泄露您的密码.如果他们将更改实际的提交ID,请记住一件事,因此您需要确保从新的库中检出所有工作存储库,而不是旧库,或者您可能会意外地将旧历史记录推送到其中一个你的新回购.我建议更改旧回购中的任何密码以防万一,因为一旦他们在那里,可能很容易意外地揭示它们.