Git-ignore certain files in sub-directories, but not all

风格不统一 提交于 2019-11-28 23:31:35

问题


I have a structure similar to the following:

/root/
/root/data/
/root/data/script.php
/root/data/some.json
/root/data/feature/one.json
/root/data/feature/two.json
/root/data/other-feature/one.json
/root/data/other-feature/important-script.php

I'd like git to ignore any .json files under the '/data/...' path, but '/data/' sometimes contains sub-directories.

My understanding is that a simple data/*.json in gitignore will only match one directory, as the * doesn't match /, as stated at http://git-scm.com/docs/gitignore, "Pattern Format", bullet #6:

Otherwise, git treats the pattern as a shell glob suitable for consumption by fnmatch(3) with the FNM_PATHNAME flag: wildcards in the pattern will not match a / in the pathname. For example, "Documentation/*.html" matches "Documentation/git.html" but not "Documentation/ppc/ppc.html" or "tools/perf/Documentation/perf.html".

Is there a simple way to do this, or do I need to actively add gitignore files in each sub-directory, explicitly?


回答1:


I've written a post about such problem recently. See here.

Basically what you need is to put one .gitignore with *.json in the /data/ directory.

UPD: Since git 1.8.4 (1.8.2 if you're using msysgit) it is possible to use double-star patterns, like /data/**/*.json




回答2:


you can place data/**/*.json in your .gitignore in /root directory to prevent multiple .gitignore files in different directories

**/ - matches any count of subdirectories (including current)

example: data/**/*.json record will ignore data/1.json, data/subfolder/2.json, data/../../3.json




回答3:


This pattern work for me for data subfolder ignoring only png and jpg files:

**/data/**/*.png
**/data/**/*.jpg


来源:https://stackoverflow.com/questions/6794717/git-ignore-certain-files-in-sub-directories-but-not-all

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!