我遇到了this .gitignore file并且无法理解。特别是第一行*~
和第二行。
以下是完整内容供快速参考:
*~
\#*\#
*.swp
tmp/*
private/**/*
public/cache
.DS_Store
.#*
example_presentation.html
请解释一下。在哪里可以找到gitignore使用的模式的详细语法(除了手册页)?
我已经尝试过的人的页面,但很可惜,我发现模式的描述有不那么有用。因此问题。
答案 0 :(得分:5)
在.gitignore
文件中有两类表达式:与临时文件匹配的表达式,开发工具使用的备份文件或文件以及与项目中的文件匹配的表达式。
第一个类匹配项目不需要的文件,因为它们是由工具生成的,可供自己使用,也可作为他们修改的文件的备份。
第二个类匹配项目所需的文件,但它们或者由项目代码生成,或者是包含敏感信息(即密码)的配置文件,以及依赖于项目运行的计算机的配置设置。 / p>
您发布的模式:
备份,临时文件等:
*~
- 以~
结尾的文件名 - 它们由OSX和Linux上的一些编辑者创建为备份副本; Windows软件通常用.bak
替换文件扩展名(或附加它); \#*\#
- 引自documentation of .gitignore
:“以#
开头的一行作为评论。请加上反斜杠("\"
)以散列开头的模式的第一个散列的前面。“ - 这意味着第二个#
不需要转义。
我不知道哪个软件会生成名称以#
开头和结尾的文件,但很可能是临时文件;
*.swp
- vi
用于检测两个编辑器实例同时编辑文件的临时文件; .DS_Store
- OSX Finder在每个目录中创建的文件;它们包含内部的bookeeping(缩略图,排序顺序等); .#*
- 名称以.#
开头的文件; .#*
来锁定文件以检测同时编辑(感谢@TobySpeight);没有必要逃避#
,见上文; 项目使用但存储库中不需要的文件:
tmp/*
- 许多Web应用程序在名为tmp
或var/tmp
或类似的目录中生成临时文件; public/cache
- public
目录是通过Web服务器可见的项目部分; cache
子目录可能包含生成的文件(fe连接和缩小的脚本和CSS文件) - 它们需要从外部(公共)可见而无需其他处理但在存储库中不需要,因为它们在运行时生成; private/**/*
,example_presentation.html
- 这两个太具体了;只有你的项目可以解释为什么存储库应该忽略它们。答案 1 :(得分:0)
*~
匹配以~
结尾的任何文件名。某些文本编辑器创建以~
结尾的文件作为自动保存以进行备份。忽略这些文件是有意义的。
答案 2 :(得分:0)
模式是标准的圆形图案;请参阅glob(7)
手册页:
?
(不在括号内)匹配任何单个字符。*
(不在括号内)匹配任何字符串,包括空字符串。- 表达式
[...]
,其中前导[
之后的第一个字符不是!
与单个字符匹配,即由该字符包围的任何字符括号。括号括起来的字符串不能为空;因此{...}}之间可以允许{。}} 括号,只要它是第一个字符。 (因此,]
匹配三个字符[][!]
,[
和]
。)- 有一个特殊约定:由
!
分隔的两个字符表示范围。 (因此,-
相当于[A-Fa-f0-9]
。)通过将[ABCDEFabcdef0123456789]
作为括号中的第一个或最后一个字符,可以在其字面意义中包含-
。 (从而,[]-]
仅匹配两个字符]
和-
,[--0]
匹配三个字符-
,.
,0
,因为/
无法匹配。)- 表达式
[!...]
匹配单个字符,即通过从中删除第一个!
获得的表达式不匹配的任何字符。 (因此,[!]a-]
匹配除]
,a
和-
之外的任何单个字符。)可以通过反斜杠删除
?
,*
和[
的特殊含义。在括号之间,这些字符代表自己。因此,[[?*\]
匹配四个字符[
,?
,*
和\
。