1

我遇到一个问题,当文件是被忽略目录下的多个子目录时,gitignore (!fileName.txt) 的异常语法不起作用。

例如:

web/[Ee]xample.[Ww]eb/[Ss]itecore/*
!web/[Ee]xample.[Ww]eb/[Ss]itecore/[Ss]hell/[Tt]hemes/[Ss]tandard/[Cc]ustom/32x32*

不包括文件夹 32x32 中的文件。
我必须通过命令行手动添加它们,如下所示:

git add -f -r web/[Ee]xample.[Ww]eb/[Ss]itecore/[Ss]hell/[Tt]hemes/[Ss]tandard/[Cc]ustom/32x32

有没有办法在这种情况下使用异常运算符?

4

1 回答 1

3

重新包含“被忽略目录下的多个子目录”的文件(当您尝试时)不起作用,因为“如果排除了该文件的父目录,则无法重新包含该文件”[来源]。

作为一个丑陋但可行的解决方法,在重新包含所需文件之前重新包含路径上的所有父目录,同时通过重新排除这些父目录中的文件来保留它们。

对于您的示例,它如下所示:

web/[Ee]xample.[Ww]eb/[Ss]itecore/*

!web/[Ee]xample.[Ww]eb/[Ss]itecore/[Ss]hell/
web/[Ee]xample.[Ww]eb/[Ss]itecore/[Ss]hell/**
!web/[Ee]xample.[Ww]eb/[Ss]itecore/[Ss]hell/[Tt]hemes/
web/[Ee]xample.[Ww]eb/[Ss]itecore/[Ss]hell/[Tt]hemes/**
!web/[Ee]xample.[Ww]eb/[Ss]itecore/[Ss]hell/[Tt]hemes/[Ss]tandard/
web/[Ee]xample.[Ww]eb/[Ss]itecore/[Ss]hell/[Tt]hemes/[Ss]tandard/**
!web/[Ee]xample.[Ww]eb/[Ss]itecore/[Ss]hell/[Tt]hemes/[Ss]tandard/[Cc]ustom/
web/[Ee]xample.[Ww]eb/[Ss]itecore/[Ss]hell/[Tt]hemes/[Ss]tandard/[Cc]ustom/**
!web/[Ee]xample.[Ww]eb/[Ss]itecore/[Ss]hell/[Tt]hemes/[Ss]tandard/[Cc]ustom/32x32*

资料来源:我的相关答案在这里

或者,您可以改为使用放置在文件目录中的 .gitignore 文件来重新包含 [此处更多]。根据口味,这可能是更漂亮的解决方案。

于 2014-08-25T00:44:22.003 回答