如何覆盖.gitignore中的规则集

时间:2014-07-19 20:40:05

标签: git

在.gitignore中,我有一条排除路径settings.php

的规则

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

所以在相关的core.excludesfile文件中我放了:!settings.php来覆盖上面的规则。 但它不起作用。我怀疑.gitignore中的规则优先于具有排除项的全局文件中的规则(这是我理解的https://www.kernel.org/pub/software/scm/git/docs/gitignore.html)。

有没有办法通过core.excludesfile或其他地方的规则覆盖.gitignore中的规则集?

3 个答案:

答案 0 :(得分:9)

是的!事实证明,在将文件添加到存储库时,您可以强制它覆盖.gitignore:

git add -f <filename>

or

git add --force <filename>

来源:https://www.kernel.org/pub/software/scm/git/docs/git-add.html

答案 1 :(得分:6)

有一个简单的方法可以覆盖.gitignore文件中的规则-只需在更深的级别上制作一个新的.gitignore文件即可。例如。在我的情况下,我可以通过将“!settings.php”添加到settings.php所在文件夹中的新.gitignore文件中,使git忽略我的settings.php文件。

答案 2 :(得分:4)

对于那些不介意修改.gitignore文件的用户,可以通过在文件名或文件夹前面添加!来覆盖规则。使用*来选择文件夹中的文件,并使用**来递归地选择子文件夹中的文件。

覆盖对特定文件的忽略:

!file.js

覆盖目录中文件的忽略项:

!assets/*

覆盖目录及其子目录中文件的忽略:

!assets/**