git忽略除扩展名以外的所有文件,但忽略扩展名的模式

git忽略除扩展名以外的所有文件,但忽略扩展名的模式,git,gitignore,Git,Gitignore,我有一个文件夹,其中包含编译软件程序所需的两种类型的文件。编译软件程序时,它会自动生成我不希望跟踪的文件,但其中一个文件的扩展名与编译我拥有的程序所需的文件的扩展名相同: # ignore everything (to ignore all auto-generated files without listing their extensions) * # but do not ignore (required to compile) !*.abc !*.xyz # but ignore i

我有一个文件夹,其中包含编译软件程序所需的两种类型的文件。编译软件程序时,它会自动生成我不希望跟踪的文件,但其中一个文件的扩展名与编译我拥有的程序所需的文件的扩展名相同:

# ignore everything (to ignore all auto-generated files without listing their extensions)
*

# but do not ignore (required to compile)
!*.abc
!*.xyz

# but ignore if file name matches pattern (auto-generated file after compilation)
*generic.abc

除了两个指定的文件扩展名之外,是否有一种方法可以忽略所有内容,但如果指定的文件扩展名前面有特定的命名约定,则可以忽略它?注意:“generic.abc”文件之前有唯一的文本,这就是为什么我想忽略“generic.abc”约定的原因。提前谢谢

是的,它的工作原理与您发布的完全相同。

我在文件名和扩展名后漏掉了一个*符号。我发现这个链接很有帮助

这是修改后的.gitignore文件,看起来很有效

# ignore everything (to ignore all auto-generated files without listing their extensions)
*

# but do not ignore (required to compile)
!*.abc
!*.xyz

# but ignore if file name matches pattern (auto-generated file after compilation) -> HERE IS THE ADDITIONAL * after .abc!
*generic.abc*

如果可能的话,我建议您将排除规则更加明确。但是,如果您确实希望这种方法忽略除您列出的内容之外的所有内容,那么您指定的规则似乎是有效的(至少在我列出的快速测试中是有效的)。我假设你在尝试使用这些规则时发现了一些问题;您观察到了什么意外行为?@MarkAdelsberger它似乎在跟踪generic.abc文件…在我将上述代码添加到.gitignore文件之前,它最初被跟踪,但我使用
git rm--cached generic.abc
将其删除,但在
git rm--cached之后键入
git status
时它仍然出现generic.abc
,它是显示为
已删除的
(仅表示它在上一次提交中)还是显示为未跟踪的文件?