Git提交一个配置文件,由用户

时间:2016-04-22 08:14:45

标签: git config gitignore

有一个Git项目需要构建一些本地配置。是否有可能提交一个文件说 env.config ,任何克隆本地repo的人都会根据他的需要覆盖此配置文件。我希望Git在提交时忽略 env.config 中的任何进一步更改。

我可以在 .gitignore 中添加条目,但这也会从repo中删除默认版本的文件。

任何想法??

4 个答案:

答案 0 :(得分:2)

在这种情况下,我通常会将 env.config.template 添加到存储库,将实际的 env.config 添加到.gitignore。每个用户都应该根据模板创建自己的 env.config

另一个解决方案是要求用户不要提交更改,甚至阻止意外提交,包括git-hook中的配置文件。但是,我认为添加模板有点清晰:它只需要一次特殊操作(复制),并且每次提交都不需要小心。

答案 1 :(得分:2)

在我的观点中,我宁愿将文件添加为env.config.example或类似的内容,并为.gitignore env.config添加条目。

答案 2 :(得分:2)

您有3个主要选项:

  1. .gitignore - Git将从现在开始忽略您所有克隆的文件。
  2. assume unchanged - 在关闭之前,会暂时忽略本地克隆上的文件。
  3. smudge/clean过滤器
  4. <强> .gitignore

    这种方式的问题是,一旦将文件传输到存储库,就不会被忽略。

    首先必须将其添加到.gitignore,然后force将其添加到存储库并提交。

    <强> --[no-]assume-unchanged

    如果你仍然想要存储库中的文件(如提出的那样),你应该在被跟踪文件上使用assume-unchanged标志。

    https://git-scm.com/docs/git-update-index

      

    指定此标志时,不会更新为路径记录的对象名称   相反,此选项设置/取消设置路径的“假设未更改”位。

         

    当“假定未更改”位打开时,用户承诺不更改文件并允许Git假定工作树文件与索引中记录的文件匹配。如果要更改工作树文件,则需要取消设置该位以告知Git。当在具有非常慢的lstat(2)系统调用(例如cifs)的文件系统上处理大项目时,这有时很有用。

         

    如果需要在索引中修改此文件,Git将失败(优雅地),例如合并时提交;因此,如果上游更改了假定未跟踪文件,则需要手动处理该情况。

    <强> Smudge/clean

    阅读所有相关内容并在此处进行设置:
    https://git-scm.com/book/en/v2/Customizing-Git-Git-Attributes

      

    事实证明,您可以编写自己的过滤器,以便在提交/结帐上的文件中进行替换。

         

    这些称为cleansmudge过滤器。

         

    .gitattributes文件中,您可以为特定路径设置过滤器,然后设置将在检出文件之前处理文件的脚本(“涂抹”,见图8-2)和之前的文件他们上演了(“干净”,见图8-3)。

         

    这些过滤器可以设置为做各种有趣的事情。

    enter image description here

答案 3 :(得分:0)

您可以在案件中使用git update-index

git update-index --no-assume-unchanged env.config

当&#34;假设不变&#34; bit打开,git停止检查工作树文件是否可能进行修改。