Git忽略*~和这些其他模式的含义是什么?
我无意中发现了它,无法理解它。特别是第一行Git忽略*~和这些其他模式的含义是什么?,git,gitignore,Git,Gitignore,我无意中发现了它,无法理解它。特别是第一行*~,第二行也是 以下是供快速参考的完整内容: *~ \#*\# *.swp tmp/* private/**/* public/cache .DS_Store .#* example_presentation.html 请解释一下。在哪里可以找到gitignore使用的模式的详细语法(除了手册页) 我已经尝试过手册页,但遗憾的是,我发现其中的模式描述没有那么有用。因此问题就来了。*~匹配任何以~结尾的文件名。一些文本编辑器创建以~结尾的文件,作为自动
*~
,第二行也是
以下是供快速参考的完整内容:
*~
\#*\#
*.swp
tmp/*
private/**/*
public/cache
.DS_Store
.#*
example_presentation.html
请解释一下。在哪里可以找到gitignore使用的模式的详细语法(除了手册页)
我已经尝试过手册页,但遗憾的是,我发现其中的模式描述没有那么有用。因此问题就来了。
*~
匹配任何以~
结尾的文件名。一些文本编辑器创建以~
结尾的文件,作为自动保存以进行备份。忽略这些文件是有意义的。有两类表达式,一类放在.gitignore
文件中:匹配临时文件的表达式、备份文件或开发工具使用的文件以及匹配项目文件的表达式
第一个类匹配项目不需要的文件,因为这些文件是由工具生成的,供自己使用或作为所修改文件的备份
第二个类匹配项目所需的文件,但这些文件要么是由项目代码生成的,要么是包含敏感信息(即密码)和配置设置的配置文件,这些信息取决于项目运行的计算机
您发布的模式:
-以*~
结尾的文件名-它们由OSX和Linux上的一些编辑器创建为备份副本;Windows软件通常将文件扩展名替换为~
(或附加文件扩展名)李>.bak
开头的行用作注释。对于以哈希开头的模式,在第一个哈希前面放一个反斜杠(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
)——这意味着第二个“\”
不需要转义 我不知道是什么软件生成的文件的名称以
开头和结尾,但很可能是临时文件#
-用于检测两个编辑器实例同时编辑文件的临时文件李>*.swp
——OSX Finder在每个目录中创建的文件;它们包含内部簿记(缩略图、排序顺序等)李>.DS_Store
-名称以.*
开头的文件;我不知道有哪个应用程序会生成它们;对锁定文件使用.
来检测同步编辑(感谢@TobySpeight);无需退出.*
,请参见上文李>#
-许多web应用程序在名为tmp/*
或tmp
或类似目录中生成临时文件李>var/tmp
-该public/cache
目录是通过web服务器可见的项目的一部分;public
子目录可能包含生成的文件(例如,连接和缩小的脚本和CSS文件)-它们需要从外部可见(公共),无需其他处理,但在存储库中不需要,因为它们是在运行时生成的李>缓存
,private/***
-这两个太具体了;只有您的项目可以解释为什么存储库应该忽略它们example\u presentation.html
这些模式是标准的glob模式;请参阅
glob(7)
手册页:
(不在括号内)匹配任何单个字符?
(不在括号内)匹配任何字符串,包括空字符串*
- 表达式
中,前导[…]
后面的第一个字符不是[
匹配单个字符,即括号中包含的任何字符。括号中包含的字符串不能为空;因此可以在 括号,前提是它是第一个字符。(因此,!
匹配三个字符[[!]
,[
和]
)!
- 有一个特殊约定:两个字符之间用
分隔表示一个范围。(因此,-
相当于[A-Fa-f0-9]
)可以将[ABCDEFabcdef0123456789]
作为括号中的第一个或最后一个字符,从而将其包含在字面意义中。(因此,-
只匹配两个字符[]-]
和]
,-
匹配三个字符[--0]
,-
,
,因为0
//code>无法匹配。)
- 表达式
匹配单个字符,即任何与通过删除第一个[!…]
获得的表达式不匹配的字符代码>从它。(因此,
匹配除[!]a-]
、]
和a
之外的任何单个字符)-
?
、*
和[
前面加一个反斜杠,可以删除它们的特殊含义。在括号中,这些字符代表它们自己。因此,[?*\]
匹配这四个字符
[
,?
,*
和\
第一行是忽略以波浪号(
~
)结尾的任何内容,第二行是忽略以\\
.Double glob(***
)开头或结尾的任何内容表示所有目录中的匹配,换句话说,忽略所有目录/子目录中匹配的任何内容。只是好奇:我认为
必须在中转义。gitignore
因此解释了\\\\\\\\\\\\\\\\\\\\\\\\\\\
中为什么不转义