有没有办法让git隐藏我的敏感信息。例如。
credentials.php (在本地存储库中)。
Line1: $dbname = 'xyz';
Line2: $dbpassword = 'password';credentials.php (在github存储库和历史中)。
Line1: $dbname = 'xyz';
Line2: $dbpassword = 'xxxxxxxx';所以git会自动用'x‘隐藏信息。
如果不是通过git,我该怎么做?我试着把我所有的凭证保存在一个地方,但是当你使用第三方库时,当你使用第三方库时,它就变得很难了。
Sidenote:我根本不可能不跟踪credentials.php文件,因为它还可能包含一些需要版本控制的其他逻辑。
注意:,我发现这个职位有一个类似的问题。但对我来说,答案并不令人满意。是否有一种自动的方式来执行“接受的答案”中所说的?
发布于 2015-06-15 19:40:02
你可能要找的是一个过滤器。您可以在.gitattributes文件中设置这些内容,以便在向暂存区域添加文件时运行一个替代,在签出时运行另一个替换:

图像来自吉特书的吉特书部分,其中包含如何创建这样一个过滤器的详细信息。
发布于 2015-06-15 19:45:51
解决这一问题的一个常见解决方案是,将一个文件credentials.example.php添加到存储库中,该文件不包含任何真正的凭据,而只包含用于指定它们的通用格式,以便向其他人展示如何创建真正的credentials.php。因为该文件随后通过.gitignore文件被忽略,所以不会添加到存储库中。因此,您可以将您的实际凭证放在那里,以便进行开发甚至部署。
缺点是,当文件更改时,可能需要将格式更改同步到两个文件中。但是,您应该尽量保持这样的凭据(或配置)文件非常简洁,因此不应该更改太频繁。
另一种解决方案是有两个配置文件,比如credentials.default.php和credentials.user.php,其中前者被签入存储库,后者再次被忽略。然后,该程序尝试加载这两个(顺序),这样您就可以覆盖用户文件中的内容,但不需要重新分配所有内容。因此,如果您有许多默认的配置(它们应该是正确的),那么您可能只需要覆盖几个重要的配置(比如凭据),所以您可以只在用户文件中指定这些配置。
发布于 2015-07-12 03:03:27
最后,我使用了poke's答案的一个变体。请把所有的选票都改投给他的答案。
我使用env变量来解决我的问题。Laravel (我使用它)使用phpdotenv框架来处理env变量。
在我的所有配置文件中,我编写env('USERNAME')、env('PASSWORD')等变量,并在项目的根目录中定义一个.env文件。
.env文件的示例内容
USERNAME=rash
PASSWORD=pass
... Other key-value pairs.在运行时,在配置文件中,所有这些键都由该文件中定义的值替换。
我还定义了一个保存示例数据的.env.example文件。
.env.example文件的示例内容
USERNAME=PUT_USERNAME_HERE
PASSWORD=PUT_PASSWORD_HERE
...那我就控制这个文件。任何使用我的项目、复制此文件、用自己的值替换所有值并将该文件重命名为.env的用户。然后,该项目顺利进行。
这解决了我的问题,因为:
.env文件中。因此,我可以版本控制我的conf文件。.env.example文件,另一端的用户确切地知道需要将什么放在适当的字段中。https://stackoverflow.com/questions/30853364
复制相似问题