4

我读过各种关于此的帖子,但我无法让它发挥作用。

在我的 .ignore 文件中

*/[Ll]ogs/*

尽管我已经尝试了大约十几种其他变体,但除了明确命名文件之外的所有内容,我仍在提交这些文件

新文件:src/methodfitness.web/Logs/Trace.log.2012-03-15

我在帮助同事排除他的 web.config 文件时也遇到了类似的问题,但现在这是他的问题,我只是不想要这些该死的日志文件。

谢谢,

R

4

5 回答 5

9

该模式*/[Ll]ogs/*将只匹配一个级别的日志文件夹。你的深度是 3 级。您还说“.ignore 文件”,我希望您的意思是“.gitignore”。无论如何,您可以通过以下四种方式之一解决此问题:

  1. 将模式更改为src/*/[Ll]ogs/*

  2. 将模式*/[Ll]ogs/*放入src/.gitignore而不是根.gitignore

  3. 将模式更改为[Ll]ogs/. 这将忽略整个树中任何名为“Logs”或“logs”的目录。如果您只想忽略特定域文件夹中此名称的目录,这可能不合适。

  4. 将图案*放入src/methodfitness.web/Logs/.gitignore. 这将忽略该文件夹中的所有文件。这种方法的好处是 git 在结帐时仍会创建Logs文件夹,这可能是也可能不是您想要发生的事情。如果这样做,请确保显式添加.gitignore文件,否则最终会忽略自身。


在相关说明中,尾随*是不必要的。您可以使用忽略模式指示目录,它将跳过整个目录。唯一需要尾随*的情况是您需要能够取消忽略特定文件(使用前缀!语法,例如!*/[Ll]ogs/goodfile.txt

于 2012-03-16T22:15:49.263 回答
2

为了忽略工作副本内部任何深处的所有日志目录(以及内容),您只需阅读 gitignore man mage 并采用从手册页中忽略 foo dir 的示例。

对于根平原中的 .gitignore

logs/

模式做的伎俩

于 2012-03-16T22:27:49.653 回答
1

您可以将[Ll]ogs/其用作忽略模式。

将该模式放在.gitignore目录结构根目录的文件中应该忽略目录树中任何一个Logslogs任何位置的所有目录。

于 2012-03-16T22:15:19.153 回答
1

为什么要用这么奇怪的方法?

要忽略文件src/methodfitness.web/Logs/夹下的所有文件,请尝试在 .gitignore 文件中添加适当的行:src/methodfitness.web/Logs/

于 2012-03-16T22:16:16.780 回答
0

您还可以使用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”等。

其他连续的星号被认为是无效的。

于 2018-08-10T11:32:41.753 回答