.gitignore中的例外情况

pis*_*hio 184 git gitignore

如何向.gitignore添加一个例外,比如"忽略所有.dll文件但是 myfile.dll"?

Ben*_*mes 250

使用!否定的模式:

*.dll
!myfile.dll
Run Code Online (Sandbox Code Playgroud)


cub*_*l42 153

如果你想忽略整个文件夹,除了一些特定的文件,然后写:

MyFolder/*
!MyFolder/CoolFile.txt
Run Code Online (Sandbox Code Playgroud)

将不工作:

MyFolder/
!MyFolder/CoolFile.txt
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这也扩展到子目录.例如,这将工作:`MyFolder/sub/*!MyFolder/sub/file.txt`但这不会:`MyFolder/*!MyFolder/sub/file.txt` (19认同)
  • 因此,“出于性能原因”,我必须手动输入 21 个具有相同名称且之前被一行忽略的不同子文件夹,这样我就可以排除一个文件。 (5认同)
  • 原因 - "如果排除该文件的父目录,则无法重新包含文件.出于性能原因,Git不会列出排除的目录,因此所包含文件的任何模式都无效,无论它们在何处定义."[https://git-scm.com/docs/gitignore] (3认同)
  • @endolith,你找到更好的方法了吗? (2认同)

Anv*_*hat 36

你也可以忽略像这样的文件夹

!src/main/resources/archetype-resources/**/*

你也可以忽略带有图案的嵌套文件夹一样

!**/src/test/resources/**/*


kam*_*ayd 7

您可以将多个.gitignore文件以分层方式协同工作以实现目标.在根级别,您可能有:

*.dll
Run Code Online (Sandbox Code Playgroud)

在文件夹里面myfile.dll你可以添加另一个.gitignore文件,如下所示:

根/ LIB/folderwithMyFiledll

!myfile.dll
Run Code Online (Sandbox Code Playgroud)

更多信息在这里

可选前缀"!" 否定了这种模式; 之前模式排除的任何匹配文件将再次包含在内.在第一个"!"前放一个反斜杠("\")对于以文字"!"开头的模式,例如"!important!.txt".如果满足某些条件,则排除该文件的父目录时,可以重新包含文件.有关详细信息,请参阅注释部分

  • 您粘贴的文档片段似乎已过时。该站点当前声明您无法在父目录下重新包含文件。 (3认同)

Rob*_*god 5

我这样做是因为我有一个名为/modules我想忽略的/modules/custom文件夹,文件夹中的所有内容除外。这对我有用。现在我的自定义模块将同步到 GitHub。

/modules/*
!/modules/custom/
Run Code Online (Sandbox Code Playgroud)

  • 这是唯一对我真正有效的方法。 (2认同)