我读过各种关于此的帖子,但我无法让它发挥作用。
在我的 .ignore 文件中
*/[Ll]ogs/*
尽管我已经尝试了大约十几种其他变体,但除了明确命名文件之外的所有内容,我仍在提交这些文件
新文件:src/methodfitness.web/Logs/Trace.log.2012-03-15
我在帮助同事排除他的 web.config 文件时也遇到了类似的问题,但现在这是他的问题,我只是不想要这些该死的日志文件。
谢谢,
R
该模式*/[Ll]ogs/*
将只匹配一个级别的日志文件夹。你的深度是 3 级。您还说“.ignore 文件”,我希望您的意思是“.gitignore”。无论如何,您可以通过以下四种方式之一解决此问题:
将模式更改为src/*/[Ll]ogs/*
将模式*/[Ll]ogs/*
放入src/.gitignore
而不是根.gitignore
将模式更改为[Ll]ogs/
. 这将忽略整个树中任何名为“Logs”或“logs”的目录。如果您只想忽略特定域文件夹中此名称的目录,这可能不合适。
将图案*
放入src/methodfitness.web/Logs/.gitignore
. 这将忽略该文件夹中的所有文件。这种方法的好处是 git 在结帐时仍会创建Logs
文件夹,这可能是也可能不是您想要发生的事情。如果这样做,请确保显式添加.gitignore
文件,否则最终会忽略自身。
在相关说明中,尾随*
是不必要的。您可以使用忽略模式指示目录,它将跳过整个目录。唯一需要尾随*
的情况是您需要能够取消忽略特定文件(使用前缀!
语法,例如!*/[Ll]ogs/goodfile.txt
)
为了忽略工作副本内部任何深处的所有日志目录(以及内容),您只需阅读 gitignore man mage 并采用从手册页中忽略 foo dir 的示例。
对于根平原中的 .gitignore
logs/
模式做的伎俩
您可以将[Ll]ogs/
其用作忽略模式。
将该模式放在.gitignore
目录结构根目录的文件中应该忽略目录树中任何一个Logs
或logs
任何位置的所有目录。
为什么要用这么奇怪的方法?
要忽略文件src/methodfitness.web/Logs/
夹下的所有文件,请尝试在 .gitignore 文件中添加适当的行:src/methodfitness.web/Logs/
您还可以使用git-scm (git version 2.16)文档中描述的双星号
例如
**/[Ll]ogs
与完整路径名匹配的模式中的两个连续星号(“**”)可能具有特殊含义:
前导“**”后跟斜杠表示在所有目录中都匹配。例如,“**/foo”匹配任何地方的文件或目录“foo”,与模式“foo”相同。"**/foo/bar" 匹配文件或目录 "bar" 直接位于目录 "foo" 下的任何位置。
尾随的“/**”匹配里面的所有内容。例如,“abc/**”匹配目录“abc”内的所有文件,相对于 .gitignore 文件的位置,具有无限深度。
斜杠后跟两个连续的星号,然后斜杠匹配零个或多个目录。例如,“a/**/b”匹配“a/b”、“a/x/b”、“a/x/y/b”等。
其他连续的星号被认为是无效的。