【问题标题】:git commit config on initial commit but never again?git commit config 初次提交但再也不会?
【发布时间】:2012-02-19 01:33:21
【问题描述】:

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

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

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

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

application/config/*

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

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

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

【问题讨论】:

    标签: git


    【解决方案1】:

    一旦版本化,您就可以更新他们的索引:

     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

    你会版本化:

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

    【讨论】:

    • 谢谢你,worktree 命令运行良好,我将把第二种解决方案看作是我长期使用 git 的东西。谢谢!
    猜你喜欢
    • 2014-03-11
    • 2012-05-14
    • 2013-02-16
    • 2019-05-17
    • 1970-01-01
    • 1970-01-01
    • 2014-11-20
    • 2019-07-05
    • 2016-02-26
    相关资源
    最近更新 更多