我对 git 还是个新手,想知道关于配置文件的最佳实践是什么。我的本地开发服务器需要与我的实际服务器不同的配置值,那么如何才能阻止它推送/pull 这些文件?
最佳答案
使用符号链接(symbolic link)。
举个例子,你有一个名为“config.ini”的配置文件。在您的 git 存储库的工作目录中,您将执行以下操作:
创建一个名为“config-sample.ini”的配置文件版本。这是您将在其上完成所有工作的文件。
在“config.ini”和“config-sample.ini”之间创建符号链接(symbolic link)。
ln -s config-sample.ini config.ini
这让您的所有代码都指向“config.ini”,即使您实际上在维护“config-sample.ini”。
更新您的 .gitignore 以防止存储“config.ini”。即添加“config.ini”行:
echo "config.ini" >> .gitignore
(可选,但强烈推荐)创建一个包含“config.ini export-ignore”行的 .gitattributes 文件。
echo "config.ini export-ignore" >> .gitattributes
进行一些编码和部署....
将代码部署到生产环境后,将“config-sample.ini”文件复制到“config.ini”。您需要对生产设置进行必要的调整。您只需在第一次部署时以及任何时候更改配置文件的结构时执行此操作。
这样做的一些好处:
配置文件的结构在 repo 中维护。
可以为开发和生产之间相同的任何配置选项维护合理的默认值。
只要您将新版本推向生产环境,您的“config-sample.ini”就会更新。这使得发现您需要在“config.ini”文件中进行的任何更改变得容易得多。
您永远不会覆盖“config.ini”的生产版本。 (带有 .gitattributes 文件的可选步骤 4 增加了一个额外的保证,即使您不小心将它添加到存储库中,也永远不会导出您的“config.ini”文件。)
(这对我来说在 Mac 和 Linux 上非常有效。我猜想在 Windows 上可能有相应的解决方案,但其他人将不得不对此发表评论。)
关于配置文件等的 Git 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9342886/