git在初始提交时提交配置,但再也没有?

sam*_*sam 4 git

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

application/config/config.php
application/config/database.php
application/config/routes.php
Run Code Online (Sandbox Code Playgroud)

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

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

application/config/*
Run Code Online (Sandbox Code Playgroud)

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

我假设我在这里遗漏了一些明显的东西,但我对git缺乏经验.

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

Von*_*onC 7

一旦版本化,您就可以更新其索引:

 git update-index --assume-unchanged application/config/config.php
Run Code Online (Sandbox Code Playgroud)

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

 git update-index --skip-worktree application/config/config.php
Run Code Online (Sandbox Code Playgroud)

(如" git update-index --assume-unchangedgit reset "中所示)


另一个解决方案是不对这些最终配置文件进行版本控制(因为它们的内容可能会因您指出而有所不同),但要使用过滤器驱动程序:

过滤驱动程序

你会版本化:

  • 模板文件(application/config/config.tpl)
  • 配置值文件(一个默认值,另一个适用于不同的环境)
  • 一个能够识别配置文件内容的脚本(因为它没有路径),并根据当前环境生成最终的配置文件.