如何将没有点的文件(所有无扩展名文件)添加到gitignore文件?

The*_*Cat 94 git gitignore

就像标题所说,是否可以在gitignore文件中添加"没有点的文件"?

我想这将照顾所有那些烦人的无扩展文件.

Von*_*onC 97

您可以尝试类似于以下的组合:

*
!/**/
!*.*
Run Code Online (Sandbox Code Playgroud)

gitignore排除规则(否定模式)应忽略所有文件,但具有扩展名的文件除外.

如前所述下面通过疯狂的物理学家,规则是:

如果排除该文件的父目录,则无法重新包含文件.(*)
(*:除非在git 2.?+中满足某些条件,见下文)

!/**/如果我们想要白名单文件,这就是重要的原因(递归地列出父文件夹).

我在类似的情况下提到过相同的规则,例如:


正如JakubNarębski 评论的那样,您可能不想忽略所有无扩展名文件.

我的建议:

  • 首先添加重要的无扩展文件
  • 然后编辑你的.gitignore如上所示:已经版本化的文件不会被忽略(即使他们没有扩展名).所有其他人都将被忽略.

对于您希望版本的任何未来无扩展文件:

git add -f -- myFile
Run Code Online (Sandbox Code Playgroud)

请注意,使用git 2.9.x/2.10(2016年中期?),如果重新包含的路径中没有通配符,则可以重新包含该文件(如果排除该文件的父目录).

NguyễnTháiNgọcDuy(pclouds)正在尝试添加此功能:

但是,由于重新纳入的规则之一是:

重新包含规则中的目录部分必须是文字(即没有通配符)

无论如何,这不会在这里奏效.

  • 注意:要使用其他排除规则,这需要是.gitignore文件中的第一组规则 (7认同)
  • 答案是完全正确的。但也许更好的“.gitignore”是“**”和“!**.*”。我知道如果星号放在前面,这并没有什么区别,但它对于 shell 处理通配符的方式更加明确和合理...... (2认同)
  • `**` 是在 Git `1.8.2` 中添加的。使用 `!*/` 代替 `!/**/` 有什么缺点吗? (2认同)

Mad*_*ist 42

*
!*/
!*.*
Run Code Online (Sandbox Code Playgroud)

* 告诉git忽略一切.

!*/然后取消任何目录的任何内容.这很关键.

!*.* 取消所有带扩展名的文件.

如果没有该!*/规则,.将不会列出名称中没有a的目录,并且不会在根文件夹之外添加任何所需的文件.

作为参考,请阅读.gitignore文档中的这两部分:

可选前缀"!" 否定了这种模式; 之前模式排除的任何匹配文件将再次包含在内.如果排除该文件的父目录,则无法重新包含文件.出于性能原因,Git不会列出排除的目录,因此无论在何处定义,所包含文件的任何模式都不起作用.在第一个"!"前放一个反斜杠("\")对于以文字"!"开头的模式,例如"!important!.txt".

如果模式以斜杠结尾,则为了以下描述的目的将其删除,但它只会找到与目录的匹配项.换句话说,foo /将匹配目录foo和它下面的路径,但是不匹配常规文件或符号链接foo(这与pathpec在Git中的工作方式一致).

  • 接得好。+1。我忘记用我最近在我的其他答案中使用的规则更新我的答案。我已经相应地更新了我的答案。 (2认同)

And*_*ian 5

在我的文件夹中,有很多带有*.c, *.h, *.txt, *.csv等扩展名的文件和没有任何扩展名的二进制文件。所以我需要忽略所有文件 execpt*.c,*.h.gitignore,所以这对我有用,从.gitignore示例来看:

 */*         #ignore all files in each directory
 !*/*.c      #unignore .c files in each directory
 !*/*.h      #unignore .h header files in each directory
 !.gitignore #unignore .gitignore
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

20239 次

最近记录:

6 年,8 月 前