Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.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
如何覆盖.gitignore中的规则集_Git - Fatal编程技术网

如何覆盖.gitignore中的规则集

如何覆盖.gitignore中的规则集,git,Git,在.gitignore中,我有一个排除路径settings.php的规则 但是,必须忽略该规则。该文件必须包含在git中,但由于特殊原因,.gitignore文件经常从外部重置为默认值。我不希望更改.gitignore本身,而是通过在core.excludesfile文件中设置计数器规则来覆盖它 所以在相关的core.excludesfile文件中,我放了:!settings.php以覆盖上述规则。 但它不起作用。我怀疑.gitignore中的规则比全局文件中带有排除项的规则具有优先级,这就是我

在.gitignore中,我有一个排除路径settings.php的规则

但是,必须忽略该规则。该文件必须包含在git中,但由于特殊原因,.gitignore文件经常从外部重置为默认值。我不希望更改.gitignore本身,而是通过在core.excludesfile文件中设置计数器规则来覆盖它

所以在相关的core.excludesfile文件中,我放了:!settings.php以覆盖上述规则。 但它不起作用。我怀疑.gitignore中的规则比全局文件中带有排除项的规则具有优先级,这就是我的理解


是否有任何方法可以通过core.excludesfile或其他地方的规则覆盖.gitignore中的规则集?

是!事实证明,将文件添加到存储库时,可以强制其重写。gitignore:

git add -f <filename>

or

git add --force <filename>

来源:

有一种简单的方法可以覆盖.gitignore文件中的规则-只需在更深层次上创建一个新的.gitignore文件。例如,在我的例子中,我可以通过添加!将settings.php导入settings.php所在文件夹中的新.gitignore文件

参考:

可选前缀!这否定了这种模式;先前模式排除的任何匹配文件都将再次包含。如果文件的父目录被排除,则无法重新包含该文件。出于性能原因,Git不会列出排除的目录,因此包含的文件上的任何模式都不会产生任何影响,无论它们定义在何处。将反斜杠\放在第一个前面!对于以文字开头的模式!,例如重要的txt


对于那些不介意修改.gitignore文件的人,您可以通过添加!在文件名或文件夹前面。使用*选择文件夹中的文件,使用**递归选择子文件夹中的文件

覆盖特定文件的忽略:

!file.js
覆盖目录中文件的忽略:

!assets/*
覆盖目录及其子目录中文件的忽略:

!assets/**

是的,这是一个有用的答案,但在git添加过程中手动重写.gitignore似乎有点不切实际。我仍然希望有一种方法可以更普遍地覆盖它。或者这是不可能的?一旦你将一个文件添加到存储库中,你就不需要在每次修改它时再添加-f它了。基本上,如果1个未跟踪,2个未在.gitignore或其他类似配置中列出,文件将被忽略。将该文件添加到存储库将有效地防止再次忽略该文件,直到您将其添加到git rm itit。应添加该文件,以确保该文件不会覆盖.git/info/exclude中的规则,该imho是好的和预期的,尽管如此,documentedgitignore似乎还不够成熟,无法通过重置gitignore文件并排除某些ignore文件等方式处理您试图解决的用例。对于使用settings.php的用例,更典型的方法是提交模板化版本,并使用make或其他模板语言等工具在构建时生成settings.php。本例中的设置值将存储在其他一些配置文件或环境变量中,出于安全原因,这些配置文件或环境变量不会提交给git。