这是我的.gitignore:
#ignore all kind of files
*
#except php files
!*.php
我想要的只是忽略除了.php之外的所有文件,但是使用这个.gitignore我也忽略了文件夹......
有没有办法告诉git接受我的项目文件夹结构,同时只保留.php文件的轨道?
现在好像我无法在我的仓库中添加文件夹:
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
答案 0 :(得分:21)
这很简单,只需在!my_folder
.gitignore
即可
#ignore all kind of files
*
#except php files
!*.php
!my_folder
最后一行将特别注意my_folder
,并且不会忽略其中的任何php文件;但由于*
的第一种模式,其他文件夹中的文件仍会被忽略。
修改强>
我想我误解了你的问题。如果要忽略除.php
个文件以外的所有文件,可以使用
#ignore all kind of files
*.*
#except php files
!*.php
这不会忽略任何没有扩展名的文件(例如:如果您有README
而不是README.txt
),并且会忽略任何包含.
的文件夹在其名称中(例如:名为module.1
的目录)。
FWIW,git doesn't track directories,因此无法为目录与文件指定忽略规则
答案 1 :(得分:6)
我有类似的问题;我想将*.c
列入白名单,但接受的答案对我不起作用,因为我的文件不包含“。”。
所以对于那些想要处理的人:
# ignore everything
*
# but don't ignore files ending with slash = directories
!*/
# and don't ignore files ending with ".php"
!*.php
答案 2 :(得分:1)
请注意,如果 !
无效,则您可能排除了一个文件夹。来自the docs(强调我的):
一个可选的前缀“!”这否定了模式;任何匹配的文件 被先前模式排除的将再次包含在内。 不是 如果该文件的父目录是,则可以重新包含该文件 排除。 Git 不会列出排除的目录以提高性能 原因,所以包含文件上的任何模式都不起作用,无论 它们被定义的地方。
答案 3 :(得分:0)
这对我有用(不包括.gitkeep文件以外的所有imgs文件夹内容)
/imgs/**/*.*
!/imgs/**/.gitkeep