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

如何将没有点的文件(所有无扩展名的文件)添加到gitignore文件?,git,gitignore,Git,Gitignore,正如标题所说,是否可以将“没有点的文件”添加到gitignore文件中 我想这会解决所有那些麻烦的无扩展文件。您可以尝试以下类似的组合: * !/**/ !*.* (a)应该忽略所有文件,除了扩展名为的文件 如所述,该规则为: (*) (*:除非git 2中满足某些条件,请参见下文) 这就是为什么/**/很重要(递归白名单父文件夹) 我在类似的案例中提到了同样的规则,比如: 同样,您可能不希望忽略所有无扩展文件 我的忠告是: 首先添加重要的无扩展文件 然后编辑.gitignore

正如标题所说,是否可以将“没有点的文件”添加到gitignore文件中


我想这会解决所有那些麻烦的无扩展文件。

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

*
!/**/
!*.*
(a)应该忽略所有文件,除了扩展名为的文件

如所述,该规则为:

*

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

这就是为什么
/**/很重要(递归白名单父文件夹)

我在类似的案例中提到了同样的规则,比如:


同样,您可能不希望忽略所有无扩展文件

我的忠告是:

  • 首先添加重要的无扩展文件
  • 然后编辑
    .gitignore
    ,如上所示:已经版本化的文件不会被忽略(即使它们没有扩展名)。所有其他的都将被忽略
对于任何将来要升级的无扩展文件,请执行以下操作:

git add -f -- myFile

请注意,使用git 2.9.x/2.10(2016年年中?),如果文件的父目录被排除,则可能会重新包含该文件

正在尝试添加此功能:

  • 对于git v2.7.0,在git v2.8.0-rc0中恢复
  • git v2.8.0-rc0,。。。在git 2.8.0-rc4中恢复了(!)
然而,由于重新纳入的规则之一是:

re-include规则中的目录部分必须是文本(即没有通配符)

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

*
!*/
!*.*
*
告诉git忽略一切

*/然后取消识别任何目录。这是至关重要的

!**取消显示所有具有扩展名的文件

没有
*/规则,名称中没有
的目录将不会列出,并且您所需的任何文件都不会添加到根文件夹之外

为了便于参考,请阅读突出部分中的以下两个部分:

可选前缀“!”否定模式;任何匹配的文件 被先前模式排除的将再次被包括。事实并非如此 如果文件的父目录为空,则可以重新包含该文件 排除。Git没有列出性能排除的目录 原因,所以包含的文件上的任何模式都不会产生任何影响 定义它们的地方。在第一行前面加一个反斜杠(\) “!”例如,对于以文字“!”开头的模式, “!重要!.txt”

如果图案以斜线结尾,则出于以下目的将其删除: 下面的描述,但它将只找到具有 目录换句话说,foo/将匹配目录foo和路径 在它下面,但与常规文件或符号链接不匹配 foo(这与pathspec在 吉特)


在我的文件夹中,有许多扩展名为
*.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

有些无扩展文件是您不想忽略的:
自述文件
许可证
复制
安装
生成文件
等,尽管您可以强制添加这些文件,然后将其删除tracked@JakubNarębski的观点很好。我已将其包含在我的答案中,以提高可视性。答案的可能副本是完全正确的。但是更好的
.gitignore
可能是
**
!***。我知道如果将星号放在前面,这并没有什么区别,但是shell处理通配符的方式更明确、更合理……注意:要使用其他排除规则,这需要是.gitignore文件中的第一组规则。您还可以重新包含某些无扩展文件,例如使用
!生成文件
。请注意,我在Git1.7.1中遇到了这个解决方案的问题,而在1.9.0中它运行良好。在我的例子中,在根目录中添加一个文件效果很好,但是在子目录中添加一个扩展名为的文件被显示为已忽略。这似乎是因为1.7.1还不支持
**
模式,请参见<代码>**
已添加到Git
1.8.2
中。使用
有什么缺点吗*/而不是
/**/?@TamaMcGlinn看起来像正则表达式:gitignore不支持正则表达式。很好+1.我忘了用我最近在矿山的其他答案中使用的规则更新我的答案。我已相应地更新了我的答案。