在.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中的规则集?
答案 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/**