Version control 使用源代码管理时如何隐藏连接字符串、用户名和密码?

Version control 使用源代码管理时如何隐藏连接字符串、用户名和密码?,version-control,github,connection-string,Version Control,Github,Connection String,我在做一个小的项目,我使用的是连接字符串,还有api键和值,其他人不应该看到或使用它们。我使用公共GitHub帐户进行源代码管理。当web.config中的这些值是纯文本时,使用源代码管理的常用方法是什么 签入代码之前是否需要手动删除这些值 我们在单独的配置文件中保留敏感和/或特定于机器的配置,然后使用configSource将它们包括在内,就像这样 <connectionStrings configSource="cstrings.config"/> 通过这种方式,您可以签入

我在做一个小的项目,我使用的是连接字符串,还有api键和值,其他人不应该看到或使用它们。我使用公共GitHub帐户进行源代码管理。当web.config中的这些值是纯文本时,使用源代码管理的常用方法是什么


签入代码之前是否需要手动删除这些值

我们在单独的配置文件中保留敏感和/或特定于机器的配置,然后使用configSource将它们包括在内,就像这样

<connectionStrings configSource="cstrings.config"/>

通过这种方式,您可以签入Web.config和cstrings.config文件,该文件具有可在开发人员计算机上使用的通用值。(例如,(本地),…MyAppNameDb…)

对于生产环境,请将cstrings.config文件标记为只读,并设置部署脚本,以便您不会试图对其进行写入。您的生产连接字符串受到该框上任何安全性的保护。这会使敏感字符串不受版本控制

cstrings.config

<?xml version="1.0" encoding="utf-8" ?>
<connectionStrings>
    <add name="Default" connectionString="Server=localhost"/>
</connectionStrings>


您可以签入包含伪值的config.sample之类的文件。然后,每个开发人员将该文件复制到配置中,并以自己的值进行编辑。然后将此本地文件放在.gitignore中。

我发现有效的方法是签入具有空白值或伪值的文件版本,然后运行:

git update-index --assume-unchanged [fileName]
然后Git将停止监视对该文件的更改,从而允许您将真正的配置信息放入其中,而不用担心签入

如果以后进行了确实要签入的更改,则可以运行:

git update-index --no-assume-unchanged [fileName]

我通常只是在签入之前删除它,但这很容易出错,而且不方便。我也想听听这方面的想法。马上!这就是我要找的。没有解决办法,只是工作!非常有用!我将此方法与其他解决方案(configSource)相结合,仅隐藏连接字符串,但允许轻松更改配置。如果使用git stash和git stash pop,此方法将重置文件内容:(gitignore对已被跟踪的文件不起作用。这是最实用的方法solution@nathanchere,实际上gitignore在已经被跟踪的文件上工作。只是,为了使gitignore工作,必须“停止跟踪”这些文件
git rm-cached filename
。此命令将从git存储库中删除文件,但会将其物理保留在本地repo中。并且,如果将其添加到.gitignore中,则不会对其进行跟踪。不过,每个人都必须在本地手动执行此操作。我们无法对存储库本身进行自动设置。