git - 在 Git 中使用条件配置文件

标签 git config

我经常发现自己在 Git 中更改项目中的单个变量,以便在开发分支上连接到不同的服务器(在 JavaScript 中,所以我不能使用预处理器定义)。

Git 中是否有某种方法可以根据我所在的分支有条件地使用一个文件或另一个文件?

我不能只使用指定的不同 URL 提交该更改,因为这样做会把它留在我的提交历史中,如果我稍后在 merge 后回到 Master 上的那个版本,它将拥有开发服务器网址。

最佳答案

不,没有,但这是一个很好解决的问题。

您有几个选择:

版本控制示例配置文件

  • 不要在版本控制中存储特定于环境的数据
  • 创建一个 config.example 文件,其中列出了所有需要指定的配置选项,并为开发提供合理的默认值。
  • 克隆你的 repo 的用户应该将 config.example 复制到真实的配置文件名,并添加真实的值
  • 将真实配置文件的名称添加到 .gitignore
  • 将您的生产凭证存储在 git 之外,但进行备份,
  • 作为奖励,您可以添加一个 setup.sh 脚本,它将 config.example 复制到真实配置的位置,并使用本地环境的变量填充它

例如,您可能有一个 JavaScript 应用程序需要知道它的数据库在哪里,并从 config/database.json 中读取此信息。你可能会使用这样的东西:

// config/database.example.json
DATABASE = {
  "host": "localhost",
  "user": "#TODO",
  "pass": "#TODO",
}

要在开发中运行,您可以将此文件复制到 config/database.json,并填写适合您的开发环境的值。

在生产环境中,您会有一个包含生产值但不受版本控制的config/database.json

repo 将在其 .gitignore 中包含 config/database.json

版本控制环境特定的配置文件

  • 存储 X 个不同的配置文件,每个环境一个,将它们命名为 config.developmentconfig.production
  • 为您的环境建立正确的符号链接(symbolic link)。
  • 将符号链接(symbolic link)添加到 .gitignore

如果您的配置文件中有任何远程敏感信息,例如 AWS key 或任何形式的密码,您应该使用第一个选项 - 存储配置选项的名称,但不存储其值,并且要求用户提供他们自己的凭据,这些凭据是通过版本控制之外的安全 channel 获得的。

关于git - 在 Git 中使用条件配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24498844/

相关文章:

git - 输入git commit -m “My message”时出现错误

codeigniter:从 config/form_validation.php 配置文件访问回调

java - Spring boot应用程序中无法解析占位符

php - 在 php 中只命中一次数据库连接

ruby-on-rails - 检查 Rails View 中的硬编码文本 - I18n

git - 如果我在忽略中使用通配符作为文件夹路径,如何在 .gitignore 中执行异常?

git - 使用非标准端口号将 SSH 存储库克隆到 SourceTree

port - 托管 minio 服务器时如何更改端口号?

git - 使用撤销的 GPG key 处理签名的 git 提交

git - 警告 "redirecting to"到底是什么意思?