为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Git
侃侃无极 2019-12-26 09:00:35
就像标题所说,是否可以在gitignore文件中添加“其中没有点的文件”?我想这会处理所有那些麻烦的无扩展名文件。
查看完整描述

3 回答

?
倚天杖

TA贡献1828条经验 获得超3个赞

您可以尝试类似的组合:


*

!/**/

!*.*

该gitignore排除规则(否定的模式)应忽略所有文件(带有扩展名的文件除外)。


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


如果排除该文件的父目录,则无法重新包含该文件。(*)

(*:除非git 2.中满足某些条件?? +,请参见下文)


这就是为什么!/**/要对文件进行白名单很重要(将父文件夹递归地白名单)的原因。


我在类似的情况下提到了相同的规则:


Gitignore忽略除一个文件夹及其所有内容以外的所有内容-无论嵌套级别如何

除了子目录及其被忽略目录的文件外的Git

Gitignore排除所有子目录中的某些文件

正如JakubNarębski 所说,您可能不想忽略所有无扩展名的文件。


我的建议:


首先添加重要的无扩展名文件

然后.gitignore如上所示编辑您的文件:已经版本化的文件将不会被忽略(即使它们没有扩展名)。所有其他的将被忽略。

对于将来要版本的任何无扩展名文件:


git add -f -- myFile

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


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


提交 git v2.7.0的506d8f1,已在提交76b620d git v2.8.0-rc0中恢复

在5cee3493 git 2.8.0-rc4中还原(!)5e57f9c git v2.8.0-rc0,... reverted(!)

但是,由于重新包含的规则之一是:


重新包含规则中的目录部分必须为原义(即没有通配符)


无论如何,这在这里是行不通的。


查看完整回答
反对 回复 2019-12-26
?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

*

!*/

!*.*

* 告诉git忽略一切。


!*/然后忽略任何目录。这很关键。


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


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


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


可选的前缀“!” 否定了模式;先前模式排除的所有匹配文件将再次包含在内。如果排除该文件的父目录,则无法重新包含该文件。由于性能原因,Git不会列出被排除的目录,因此包含在文件上的任何模式(无论它们在何处定义)都无效。在第一个“!”前面加上反斜杠(“ \”)。以文字“!”开头的模式,例如“!important!.txt”。


如果该模式以斜杠结尾,则出于以下描述的目的将其删除,但它只会找到与目录匹配的内容。换句话说,foo /将匹配目录foo及其下的路径,但不匹配常规文件或符号链接foo(这与pathspec通常在Git中的工作方式一致)。


查看完整回答
反对 回复 2019-12-26
?
慕田峪4524236

TA贡献1875条经验 获得超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


查看完整回答
反对 回复 2019-12-26
  • 3 回答
  • 0 关注
  • 1009 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信