git在初始提交时提交配置,但从不再次?

时间:2012-02-19 01:33:21

标签: git

我已经开始为我的项目使用git了,当我创建一个项目时,它有一个包含配置文件的config文件夹:

application/config/config.php
application/config/database.php
application/config/routes.php

当我第一次提交时,我希望提交这些文件(及其默认值),因此它们作为“默认”配置存在于存储库中,如果我克隆到存储库,我会得到这些文件。当我更新它们以包含我的配置变量时(对于我正在开发的版本)我不希望它们在存储库中更新,我希望它们在存储库中保持默认状态。

我首先尝试将它们设置为默认状态,然后将它们添加到我的.gitignore文件中,如下所示:

application/config/*

现在当我提交我的配置文件时没有提交(是的!)但是原始默认值消失了,文件夹application / config /不再存在于我的存储库中。

我认为我在这里遗漏了一些明显的东西,但我对git缺乏经验。

如何在第一次提交时提交配置文件,但是再次 它们在默认状态下保留在存储库中?

1 个答案:

答案 0 :(得分:7)

您可以在版本化后更新其索引:

 git update-index --assume-unchanged application/config/config.php

或者您甚至可以更加谨慎地更新索引:

 git update-index --skip-worktree application/config/config.php

(如“git update-index --assume-unchanged and git reset”中所示)


另一个解决方案是版本那些最终配置文件(因为它们的内容可能会因你指出的而有所不同),但要使用filter driver

filter driver

你会版本化:

  • 模板文件(application/config/config.tpl
  • 配置值文件(一个默认值,另一个适用于不同的环境)
  • 一个能够识别配置文件内容的脚本(自it won't have its path起),并根据当前环境生成最终配置文件。