繁体   English   中英

如何在.gitignore中指定忽略目录?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM