官网中说明了:
Otherwise, Git treats the pattern as a shell glob: "*" matches anything except "/",
我记得 glob 表达式中*
能匹配a.js , x.y , abc , abc/
但不能匹配a/b.js
, 这是正常的.
但是我刚才新建了一个 git 仓库试了下, .gitignore:
*.txt
能够排除:
a.txt
b.txt
c.txt
f1/f1a.txt
f1/f1b.txt
f1/a.bd/bd.txt
f2/a.txt
ios/.../*.txt
是我理解有问题吗?
1
qiqico 2018-05-10 15:51:52 +08:00
试试 **/*.txt
|
3
ynyounuo 2018-05-10 15:58:11 +08:00
|
4
FaiChou OP 当我使用 python 的 fnmatch 匹配缺又能匹配上.. 怪! |
5
VDimos 2018-05-10 16:20:54 +08:00 via Android
可能是用的正则匹配的吧,楼主试试建个文件是 a.json.txt ,看看能不能匹配
|
6
ynyounuo 2018-05-10 16:27:37 +08:00
@FaiChou
看 doc 这一句 > A leading slash matches the beginning of the pathname. For example, "/*.c" matches "cat-file.c" but not "mozilla-sha1/sha1.c". 反过来说就是,没有 leading slash 就 matches recursively |
9
ynyounuo 2018-05-10 16:38:20 +08:00
|
10
FaiChou OP @ynyounuo
我有这样需求: 忽略很多`project.xcodeproj`下的`xcuserdata/`文件夹, 比如 ios/a/b/c/p.xcodeproj/xcuserdata/userfile ios/a/b/d/p.xcodeproj/xcuserdata/userfile 如果写 *.xcodeproj/xcuserdata/ 会失败. 只好写 ios/**/*.xcodeproj/xcuserdata/ 这样才能成功. |
11
FaiChou OP p.xcodeproj 是个工程文件包
|
12
FaiChou OP 官网说 "/*.c" matches "cat-file.c" but not "mozilla-sha1/sha1.c". 可是我用 python3 的 fnmatch, 发现"/*.c"并不匹配"cat-file.c" . 所以说也不能全用 fnmatch 来检测. @ynyounuo |
13
jasonyang9 2018-05-11 08:52:43 +08:00
https://www.atlassian.com/git/tutorials/saving-changes/gitignore
``` git check-ignore -v pattern.ext ``` |