git commit config 在初始提交但再也没有提交?

标签 git

我已经开始在我的项目中使用 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

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


另一种解决方案是对那些最终配置文件进行版本控制(因为它们的内容可能如您所指出的那样有所不同),而是使用 filter driver :

filter driver

您将进行版本控制:

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

关于git commit config 在初始提交但再也没有提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9345839/

相关文章:

git - 为什么不带参数的 git rebase 会这样工作?

git - 如何在git中使用glob匹配选择多种文件类型

git - 如何使用 git-subtree 转到特定的提交?

git - 通过 git rebase --interactive 编辑提交时如何保留提交消息?

c# - 每个项目使用 GIT 时 Visual Studio 的行为是什么?

git - 使用子模块创建公共(public)仓库

git - 尝试创建 git 存储库并向其提交文件,但没有成功

git - 对于远程git存储库,ssh也是 “powerful”吗?如何设置权限?

linux - 无法 git 克隆

git - 忽略具有给定名称和扩展名的所有文件