关于gitignore:git忽略除一个扩展名和文件夹结构之外的所有文件

git ignore all files except one extension and folder structure

这是我的.gitignore:

1
2
3
4
#ignore all kind of files
*
#except php files
!*.php

我只想忽略除.php文件以外的所有类型的文件,但是使用这个.gitignore,我也忽略文件夹…

有没有办法告诉Git在只跟踪.php文件的同时接受我的项目文件夹结构?

似乎现在我无法将文件夹添加到我的报告中:

1
2
3
4
5
vivo@vivoPC:~/workspace/motor$ git add my_folder/
The following paths are ignored by one of your .gitignore files:
my_folder
Use -f if you really want to add them.
fatal: no files added


这很简单,只需在您的EDOCX1[1]中添加另一个条目EDOCX1[0]

1
2
3
4
5
#ignore all kind of files
*
#except php files
!*.php
!my_folder

最后一行将特别注意my_folder,并且不会忽略其中的任何php文件;但是由于*的第一个模式,其他文件夹中的文件仍然会被忽略。

编辑

我想我误解了你的问题。如果要忽略除.php文件以外的所有文件,可以使用

1
2
3
4
#ignore all kind of files
*.*
#except php files
!*.php

这不会忽略没有扩展名的任何文件(例如:如果您有README而不是README.txt,并且会忽略名称中有.的任何文件夹(例如:名为module.1的目录)。

fwiw和git不跟踪目录,因此无法为目录vs文件指定忽略规则。


我有一个类似的问题,我想把*.c列为白名单,但接受的答案对我不起作用,因为我有不包含"."的文件。

所以对于那些想处理这些问题的人来说:

1
2
3
4
5
6
7
8
# ignore everything
*

# but don't ignore files ending with slash = directories
!*/

# and don't ignore files ending with".php"
!*.php