在gitignore中包含特定的文件扩展名

时间:2015-05-22 04:51:27

标签: git gitignore

我希望将所有* .meta文件包含在Assets目录和所有子目录中,同时排除Assets中的所有其他内容

我试过

/Assets/*
!/Assets/**/*.meta
!*.meta

但在/ Assets ????

中只包含* .meta

感谢您的帮助

1 个答案:

答案 0 :(得分:3)

首先,如果忽略规则不起作用,您可以查看with git check-ignore

git check-ignore -v -- yourFile

它将显示哪个忽略规则忽略您认为不应忽略的文件。

然后要记住的主要规则是:

  

It is not possible to re-include a file if a parent directory of that file is excluded.*
  (*:除非在git 2.?+中满足某些条件,请参见下文)

这就是为什么您的规则只在*.meta(而不是子目录)中包含/Assets的原因

您需要包含文件的所有父文件夹(如in this recent example)才能包含文件

/Assets/**/**
! /Assets/**/
!/Assets/**/*.meta

我使用git 2.4.1测试它并且它可以工作(甚至在Windows上) 它仅包含*.meta和所有子目录中的Assets个文件,但不包括其他所有内容。

请注意,使用git 2.9.x / 2.10(2016年中期?),如果排除该文件的父目录if there is no wildcard in the path re-included,则可能会重新包含文件。

Nguyễn Thái Ngọc Duy (pclouds)正在尝试添加此功能:

然而,由于重新加入的条件之一是:

  

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

这不会在这里奏效。