是否可以忽略子目录中的.gitignore规则?

ni65a41a  于 2022-09-21  发布在  Git
关注(0)|答案(4)|浏览(226)

我想忽略子目录中的所有.gitignore规则,但根目录中的.gitignore规则除外。

例如:我已经在目录结构/a中有.gitignore文件。

并且在/a/b中也有.gitignore文件。假设/a具有a.txtb.txt文件。

/a/b具有.config文件。.gitignore/a/b中定义.config

/a/b中的.gitignore将忽略.config文件。

但是我真的想通过忽略.gitignore在子目录中的规则来跟踪.config文件。

有可能吗?

t5zmwmid

t5zmwmid1#

您的问题不太清楚,但如果有一些子目录需要不同的gitignore规则,您只需在该目录中创建一个新的.gitignore即可。

假设您拥有:

project/.gitignore
project/stuff/.gitignore

Stuff/中的.gitignore将覆盖根目录中的.gitignore。

git help gitignoreman gitignore有更多关于可能性的信息。

juud5qan

juud5qan2#

假设您想要在存储库中包含node_modules,但是某个模块本身就有.gitignore。您可以通过将以下内容添加到根.gitignore文件来取消这些规则:


# Make sure to include everything in node_modules.

!node_modules/**
fnvucqvd

fnvucqvd3#

这里问题的关键是父目录被排除在外。来自$ man gitignore
如果文件的父目录被排除,则无法重新包括该文件。出于性能原因,Git不会列出排除的目录,因此包含文件上的任何模式都不起作用,无论它们是在哪里定义的。

以下是我是如何让它发挥作用的。已给予:

/a/...
/b/foo
/c/...

/.gitignore

/*
!/b

/b/foo将显示为包含文件,而/a/c中的所有内容将被排除。权衡之处在于,您必须为要包含文件的任何目录的所有父目录添加一个否定。

w1e3prcc

w1e3prcc4#

据我所知,没有办法做这件事。由于本地.gitignore将覆盖根目录GINIGNORE,因此我的变通方法是手动添加。

git add --force [ your file and folder]

相关问题