Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git默认文件(第一次拉取后忽略)_Git - Fatal编程技术网

Git默认文件(第一次拉取后忽略)

Git默认文件(第一次拉取后忽略),git,Git,您将如何在git中设置此场景: 我的源代码有一个带有配置设置的设置文件,如db连接凭据等。。。(这是一个Drupal源代码,我指的是settings.php) 当开发人员克隆源代码时,他们需要进入并更改特定于其环境的设置。当然,这些变化不应该推回原点。同时,我希望他们能够使用这个默认模板(因为它的大部分不会被更改) gitignore在这里不起作用,因为我想在他们的第一个克隆中使用它。 我是否需要教每一位新开发人员关于git更新索引的知识——假设没有变化 有没有更巧妙的方法呢?我会将databa

您将如何在git中设置此场景:

我的源代码有一个带有配置设置的设置文件,如db连接凭据等。。。(这是一个Drupal源代码,我指的是settings.php)

当开发人员克隆源代码时,他们需要进入并更改特定于其环境的设置。当然,这些变化不应该推回原点。同时,我希望他们能够使用这个默认模板(因为它的大部分不会被更改)

gitignore在这里不起作用,因为我想在他们的第一个克隆中使用它。 我是否需要教每一位新开发人员关于git更新索引的知识——假设没有变化


有没有更巧妙的方法呢?

我会将
database.php
重命名为
database.php.sample
,并将
database.php
添加到
.gitignore


每当出现新用户时,只需从
数据库.php.sample
复制到
数据库.php
,并进行适当的更改。

一种更巧妙的方法是使用,并使用涂抹脚本:

基于的(使用
.gitignore
中的
database.php
),您将:

  • 版本a
    database.php.sample
  • 仅当所述private
    database.php
    尚不存在时,才通过smudge脚本(在
    git checkout
    上)将其复制到private(即未版本化的)
    database.php

从git 1.7.4开始,过滤器定义中的
%f
将替换为当前文件的路径;请参见

是的,有。这是我已经发布的解决方案

database.php上使用
gitadd-N
,然后使用
gitadd-p
。编辑大块以便用占位符替换敏感数据


之后需要注意的一件事是,永远不要从存储库的根目录添加git。
,但没有人这样做,对吗?;)

好建议!就像wordpress所做的那样:汉克斯!我当前项目中的人有点反对这一点,但我倾向于认为这是最好的方法。你应该小心忽略过去项目中跟踪的文件。git将被忽略的文件视为一次性文件,因此,如果在
中跟踪了
数据库.php
,则执行
git签出和&git签出-
操作将删除您的
数据库.php
文件而不发出警告。更安全的选择是让
database.php
包含一组默认选项,但在该文件的末尾包括
database.local.php
(如果存在)它可以覆盖默认设置。过滤器驱动程序的想法是自动处理
database.php.sample
的副本,而不必手动复制。可能的副本请更详细地描述您的解决方案。我尝试了以下操作:
git add-N template.file
清理了模板文件
git add-p template.file
Stage this hunk[y,N,q,a,d,/,s,e,?]?y
使用Sourcetree提交阶段,在此之后,
template.file
的任何更改仍会被注意到并将被提交:(