使用 git 管理 client/server 特定文件的最佳方法是什么?

What is the best way to manage client/server specific files with git?

我使用 python 在我的工作笔记本电脑上开发代码,然后部署到我们的服务器以实现自动化。

我最近刚开始通过 PyCharm 使用 git 和 github,希望能使部署过程更顺利。

我的问题是我有一个配置文件 (YAML),它针对我的构建环境(笔记本电脑)和生产环境(服务器)使用不同的参数。比如文件路径改变。

是否有 git 我可以实施的做法,当从我的笔记本电脑推送或从服务器拉取时,它会排除对文件特定部分的更改?

我对 pyvenv.cfg 等文件使用 .gitignore 但有没有办法在文件中执行此操作?

我想到的另一种方法是对本地和远程特定参数使用不同的分支...

例如:

本地分支将包含本地参数,生产分支将包含生产参数。在这种情况下,我会将 1st 从本地推送到本地分支。接下来我会对生产参数进行必要的更改,在我的情况下,在我的笔记本电脑上工作比通过服务器工作要容易得多,然后推送到生产分支。但是,我觉得这有悖于良好做法,或者只是改变了分支的使用。

谢谢。

配置文件也是存储凭据的常用位置(例如:login/pwd 用于数据库,API 密钥用于网络服务......)这通常是个好主意不要将它们存储在存储库中。

一个常见的做法是将模板文件存储在 repo 中(例如:config.yml.sample),而不是 将实际的配置文件与代码一起存储(甚至添加它在 .gitignore 中,如果它在版本化目录中),并在部署时添加步骤以设置初始配置文件或更新现有配置文件——这些步骤可以是手动的,也可以是脚本化的。如果需要,您可以单独备份和版本化配置。

另一种可能性是从其他地方(例如环境)获取应该改编的元素,并在配置文件中包含一些 user: $APP_DB_USER 条目。您应该在您的两台服务器上提供这些条目 - 例如:在您的本地计算机上有一个 env.txt 文件,在您的生产服务器上有一个不同的文件。