如何在Git中忽略一个目录中的文件?

27 浏览
0 Comments

如何在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/*

admin 更改状态以发布 2023年5月24日
0
0 Comments

应该是前者。不要按文件夹结构来过滤,而是按扩展名来过滤。

例如,我的 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的评论):

https://github.com/github/gitignore

0
0 Comments

模式格式

  • 空白行不匹配任何文件,因此可以用作可读性的分隔符。

  • #开头的行被视为注释。

  • 一个可选的前缀会否定模式。任何被前一个模式排除的匹配文件将重新被包含在内。如果否定模式匹配,这将覆盖优先级较低的模式来源。

  • 如果模式以斜杠结尾,则为下面的描述而移除,但它只能与目录匹配。换句话说,foo/将与包含在其中的目录foo和路径匹配,但不会匹配常规文件或符号链接foo(这与Git中通常的路径规范工作方式一致)。

  • 如果模式不包含斜杠/,则Git将其视为shell glob模式,并检查路径名与.gitignore文件的位置相关联的相对匹配。在不从.gitignore文件中的情况下,相对于工作树的最上层。

  • 否则,Git将该模式视为shell glob,适用于fnmatch(3)消耗FNM_PATHNAME标志:模式中的通配符不会与路径名中的/匹配。例如,Documentation/*.html匹配Documentation/git.html但不匹配Documentation/ppc/ppc.htmltools/perf/Documentation/perf.html

  • 前导斜杠与路径名的开头匹配。例如,/*.ccat-file.c匹配,但不与mozilla-sha1/sha1.c匹配。

更多信息可以在这里找到

git帮助gitignore
或者
man gitignore

0