Git忽略文件仍提交日志记录。

4

我已经阅读了各种关于这个问题的帖子,但是我就是无法让它工作。

在我的 .ignore 文件中,我有以下内容:

*/[Ll]ogs/*

虽然我已经尝试了十几种其他变量,除了明确命名文件之外的所有方法,但我仍然在提交这些文件。

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

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

谢谢,

R

5个回答

10
模式“*/ [Ll]ogs / *”只匹配一个级别深度的logs文件夹。您的是3级深度。您还说了“.ignore文件”,我希望您指的是“.gitignore”。无论如何,您可以通过以下四种方式之一进行修复:
  1. 将模式更改为“src / * / [Ll]ogs / *”
  2. 将模式“*/ [Ll]ogs / *”放入src/.gitignore而不是根目录下的.gitignore
  3. 将模式更改为“[Ll]ogs /”。这将忽略整个树中名为“Logs”或“logs”的任何目录。如果您只想在特定域文件夹内忽略具有此名称的目录,则可能不适用。
  4. 将模式“*”放入src/methodfitness.web/Logs/.gitignore中。这将忽略该文件夹中的所有文件。这种方法的好处是,当进行checkout时,git仍将创建“Logs”文件夹,这可能是您想要发生的事情,也可能不是。如果您这样做,请确保明确添加.gitignore文件,否则它将忽略自身。

另外,尾随的“*”是不必要的。您可以使用忽略模式指示目录,并跳过整个目录。仅当您需要能够取消忽略特定文件(使用前缀“!”语法,例如!*/[Ll]ogs/goodfile.txt)时,才需要尾随的“*”。

是的,.gitignore。当我写这个时有点紧张。谢谢你的解释。我将使用[Ll]ogs/。虽然我感觉我一定尝试过了,但由于有太多的排列组合,我可能错过了那一个。无论如何,再次感谢。 - Raif

3
为了忽略工作副本中所有日志目录(包括内容),您只需阅读gitignore手册并采用来自man-page的忽略foo dir的示例即可。
对于根目录下的.gitignore文件:
logs/

模式是解决问题的关键


1

您可以使用[Ll]ogs/作为忽略模式。

将该模式放入目录结构根目录下的.gitignore文件中,应该会忽略所有名为Logslogs的目录,无论它们在目录树的哪个位置。


0

你为什么使用如此奇怪的方法?

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


0

你也可以像git-scm (git version 2.16)文档中所描述的那样使用双星号。

例如:

**/[Ll]ogs

在完整路径名中匹配的模式中,连续的两个星号(“**”)可能具有特殊含义: - 以“**/”开头的意思是匹配所有目录。例如,“**/foo”匹配任何地方的文件或目录“foo”,就跟模式“foo”一样。“**/foo/bar”匹配直接位于目录“foo”下的文件或目录“bar”。 - 以“/**”结尾的意思是匹配目录中的所有内容。例如,“abc/**”相对于.gitignore文件的位置,匹配目录“abc”中的所有文件,无限深度。 - 斜杠后跟两个连续的星号,然后是斜杠,表示匹配零个或多个目录。例如,“a/**/b”匹配“a/b”、“a/x/b”、“a/x/y/b”等等。 其他连续的星号被视为无效。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接