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

git提交配置在初始提交时,但不再提交?,git,Git,我已经开始在我的项目中使用git,当我创建一个项目时,它有一个包含配置文件的配置文件夹: application/config/config.php application/config/database.php application/config/routes.php 当我第一次提交时,我希望这些文件(及其默认值)被提交,因此它们作为“默认”配置存在于存储库中,如果我克隆到存储库,我将获得这些文件。当我更新它们以包含我的配置变量(针对我正在开发的版本)时,我不希望它们在存储库中被更新,我希

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

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

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

application/config/*
现在,当我提交我的配置文件时,我的存储库中不再存在application/config/文件夹,尽管原始默认值消失了(耶!)

我想我遗漏了一些明显的东西,但我对git非常缺乏经验


如何在第一次提交时提交配置文件,但在保存在存储库中的配置文件处于默认状态时再也不提交

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

 git update-index --assume-unchanged application/config/config.php
或者您甚至可以更持久地更新索引:

 git update-index --skip-worktree application/config/config.php
(如“”所示)


另一种解决方案是不要对这些最终配置文件进行版本设置(因为它们的内容可能与您指出的不同),而是使用:

您将对其进行版本控制:

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

谢谢您,worktree命令工作得非常好,我将把第二个解决方案作为我长期使用git的一部分。谢谢