如何在Git中忽略一个目录中的文件?
如何在Git中忽略一个目录中的文件?
如何在.gitignore
文件中忽略某个目录中的文件?
是这样的吗
config/databases.yml cache/* log/* data/sql/* lib/filter/base/* lib/form/base/* lib/model/map/* lib/model/om/*
还是这样的呢
/config/databases.yml /cache/* /log/* /data/sql/* /lib/filter/base/* /lib/form/base/* /lib/model/map/* /lib/model/om/*
?
应该是前者。不要按文件夹结构来过滤,而是按扩展名来过滤。
例如,我的 C# 开发忽略文件:
#OS junk files [Tt]humbs.db *.DS_Store #Visual Studio files *.[Oo]bj *.user *.aps *.pch *.vspscc *.vssscc *_i.c *_p.c *.ncb *.suo *.tlb *.tlh *.bak *.[Cc]ache *.ilk *.log *.lib *.sbr *.sdf ipch/ obj/ [Bb]in [Dd]ebug*/ [Rr]elease*/ Ankh.NoLoad #Tooling _ReSharper*/ *.resharper [Tt]est[Rr]esult* #Project files [Bb]uild/ #Subversion files .svn # Office Temp Files ~$*
更新
根据下面的评论,我想提供一个更新。虽然不能直接回答 OP 的问题,但是请参见以下更多的 .gitignore
语法示例。
社区社区wiki(不断更新):
.gitignore 适用于Visual Studio项目和解决方案
在此处可以找到使用特定语言的更多示例(感谢Chris McKnight的评论):
模式格式
-
空白行不匹配任何文件,因此可以用作可读性的分隔符。
-
以
#
开头的行被视为注释。 -
一个可选的前缀
!
会否定模式。任何被前一个模式排除的匹配文件将重新被包含在内。如果否定模式匹配,这将覆盖优先级较低的模式来源。 -
如果模式以斜杠结尾,则为下面的描述而移除,但它只能与目录匹配。换句话说,
foo/
将与包含在其中的目录foo
和路径匹配,但不会匹配常规文件或符号链接foo
(这与Git中通常的路径规范工作方式一致)。 -
如果模式不包含斜杠
/
,则Git将其视为shell glob模式,并检查路径名与.gitignore
文件的位置相关联的相对匹配。在不从.gitignore
文件中的情况下,相对于工作树的最上层。 -
否则,Git将该模式视为shell glob,适用于
fnmatch(3)
消耗FNM_PATHNAME
标志:模式中的通配符不会与路径名中的/
匹配。例如,Documentation/*.html
匹配Documentation/git.html
但不匹配Documentation/ppc/ppc.html
或tools/perf/Documentation/perf.html
。 -
前导斜杠与路径名的开头匹配。例如,
/*.c
与cat-file.c
匹配,但不与mozilla-sha1/sha1.c
匹配。
更多信息可以在这里找到
git帮助gitignore
或者
man gitignore