我有一个类似于以下的结构:
/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
Run Code Online (Sandbox Code Playgroud)
我想git忽略'/ data/...'路径下的任何 .json文件,但'/ data /'有时包含子目录.
我的理解是,一个简单data/*.json的gitignore只会匹配一个目录,因为*它不匹配/,如http://git-scm.com/docs/gitignore所述,"模式格式",项目符号#6:
否则,git将模式视为适合fnmatch(3)使用FNM_PATHNAME标志的shell glob:模式中的通配符与路径名中的/不匹配.例如,"Documentation/*.html"匹配"Documentation/git.html",但不匹配"Documentation/ppc/ppc.html"或"tools/perf/Documentation/perf.html".
有没有一种简单的方法可以做到这一点,还是我需要明确地在每个子目录中主动添加gitignore文件?
我想做简单的事情,忽略.suo文件和bin和obj文件夹提交到git repo.我创建了.gitignore文件,它适用于bin和obj文件夹,但它一直允许.suo文件提交.gitignore的内容很简单:
/build/
*.suo
*.user
_ReSharper.*/
*.sdf
bin/
obj/
Debug/
Release/
*.opensdf
*.tlog
*.log
TestResult.xml
*.VisualState.xml
Version.cs
Version.h
Version.cpp
Run Code Online (Sandbox Code Playgroud)
首先我认为问题是.suo文件已经在repo上了,所以我使用了一组git命令将它从repo中删除:
git rm "file.suo"
git commit -m "suo removed"
git pull origin master
git push origin master
Run Code Online (Sandbox Code Playgroud)
一切顺利,.suo在本地删除,它从repo中删除,并在下一次提交时再次被推送到repo.
在图片上提交.suo文件.

有没有人有这样的问题?如何解决这类问题?
我一直在环顾四周,却找不到与我相同的情景.我有:
--public
|--img
|--logo (folder)
|--post_image (folder)
|--banner.jpg
|--icon.ico
|--image1.jpg
|-........etc
Run Code Online (Sandbox Code Playgroud)
我需要忽略logo和post_image文件夹,但我想保留文件img夹内的每个文件.我该怎么办呢?
现在我有,**/public/img但我觉得这不是正确的方法!
忽略某个目录及其中所有子目录中某个文件类型的正确方法是什么?
示例:忽略所有子目录中的所有.xml文件.master/xyz/master/xyz/
我不确定以下哪两种方法是正确的......
master/xyz/*/*.xml
master/xyz/**/*.xml
Run Code Online (Sandbox Code Playgroud)
我应该使用哪一个?
(我使用Git 1.9.1)
我想修改自己的位置,.gitignore以便忽略所有.jpg不在中的文件/public/assets/images。
我尝试了以下方法:
(!/public/assets/images/)!*.jpg
/public/assets/images/!*.jpg
Run Code Online (Sandbox Code Playgroud)
但是除了那两个我不确定还有什么尝试。