我想要的是忽略除 .php 文件之外的所有类型的文件,但是使用这个 .gitignore 我也忽略文件夹...
#ignore all kind of files
*
#except php files
!*.php
有没有办法告诉 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
这很简单,只需在您的
!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 不跟踪目录,因此无法为目录与文件指定忽略规则
我也有类似的问题;我想将
*.c
列入白名单,但接受的答案对我不起作用,因为我的文件不包含“.”。
对于那些想要解决这个问题的人:
# ignore everything
*
# but don't ignore files ending with slash = directories
!*/
# and don't ignore files ending with ".php"
!*.php
这对我有用(不包括除 .gitkeep 文件之外的所有 imgs 文件夹内容)
/imgs/**/*.*
!/imgs/**/.gitkeep
请注意,如果
!
不起作用,则您可能排除了某个文件夹。来自文档(强调我的):
可选前缀“!”这否定了模式;任何匹配的文件 被先前模式排除的将再次被包含。 不是 如果该文件的父目录是,则可以重新包含该文件 排除。 Git 不会列出出于性能原因排除的目录 原因,因此包含文件上的任何模式都没有效果,无论 它们的定义位置。
找不到我要找的那个,所以添加对我有用的那个。
以下声明指出,
现在,如果您记下
step-3
,您就会看到它has cumulative effect of step-1, 2 declarations
。即,当递归地忽略每个子目录时,忽略该子目录直接下的所有内容,除了步骤 2 中忽略的少数文件。这将是 carried out for each subdir that is being processed
,因此声明的顺序/顺序很重要。
.gitignore
文件应包含
# !! NOTE: the sequence of declaration is important !!
# Ignore Everything
*
# Exclude specific files from being ignored (override)
!.gitignore
!*.xml
# overrides stated above, applies to all dir (root and subdirs - recursively)
!**/