[英]How to specify to ignore a directory in .gitignore?
在git仓库中,如果我想通过将子目录添加到.gitignore
来忽略子目录(因此也忽略了子目录下的所有内容),
mysubdir
mysubdir/
mysubdir/*
? 他们似乎对我也一样。 谢谢。
“最正确的”将是:
mysubdir/
列表中的第一个( mysubdir
)将忽略该名称的目录和文件; 可能不是问题,但有可能。 最后一个仅忽略目录下的文件,最终结果相同,因为默认情况下,Git中会忽略空目录。
如果查看GitHub提供的gitignore文件 ,您会发现它们始终按directory/
语法忽略目录。
有一些区别,但是它们是细微的。
使用方法:
mysubdir
忽略任何名为mysubdir
文件或目录 。 例如,如果将其放在顶级.gitignore
,则目录A和B的布局为:
A/
file
mysubdir <-- a file, not a directory!
B/
file
mysubdir/ <-- an actual directory
file
那么此.gitignore
将同时忽略A/mysubdir
(一个文件)和B/mysubdir
(一个目录)。 通过忽略第二,它切断所有文件中的 B/mysubdir/
为好。
使用方法:
mysubdir/
仅忽略名为mysubdir
目录 。 在这种情况下, 不会忽略A/mysubdir
,因为它是一个file 。 但是B/mysubdir
是一个目录,因此将被忽略。
使用方法:
mysubdir/*
告诉Git它应该忽略mysubdir
所有文件和目录。 为此, mysubdir
必须是一个目录(如果不是,则不能包含文件和更多目录)。 因此,乍一看似乎与mysubdir/
相同。 但这不是!
当使用mysubdir/*
,您迫使Git 读取目录本身,以列出其中的所有文件。 然后,它将根据.gitignore
文件中的模式检查每个文件。 这意味着您可以在.gitignore
文件中添加覆盖:
!mysubdir/precious
由于开头,该文件或目录不会被忽略!
字符。 但是,要让Git 查找文件,Git必须先读取目录 。 如果您列出了mysubdir/
而不是mysubdir/*
,则Git 不会费心读取目录 ,也不会发现mysubdir/precious
的存在。
当然,强制Git读取目录有一个(轻微)损失:Git必须花费任何时间读取该目录。 如果罚买你的东西,如不忽略某些文件或子目录是该目录中你应该这样做而已。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.