赞
踩
ProGit对.gitignore
有相应的描述。
.gitignore
是一个需要写入内容的文件,用于指定要忽略的刻意untrack的文件。
需要注意的是,.gitignore
不对已经track的文件起效。
.gitignore
文件中的每一行都指定一个模式(pattern)。在决定是否忽略路径(path)时,Git通常会检查来自多个源的gitignore
pattern,按照以下从高到低的优先顺序(在一个优先级内,最后匹配的pattern决定结果):
.gitignore
文件中读取的pattern,较高级别文件中的pattern被较低级别文件中的pattern覆盖到包含文件的目录。这些pattern式与.gitignore
文件的位置相匹配。项目通常在其存储库中包含此类.gitignore
文件,其中包含作为项目构建的一部分生成的文件的pattern。$GIT_DIR/info/exclude
读取的pattern。core.excludesFile
指定的文件中读取的pattern。放置pattern的文件取决于pattern的使用方式:
.gitignore
文件。$GIT_DIR/info/exclude
文件。~/.gitconfig
中由core.excludesFile
指定的文件。它的默认值为$XDG_CONFIG_HOME/git/ignore
。如果$XDG_CONFIG_HOME
未设置或为空,则使用$HOME/.config/git/ignore
代替。底层Git管道工具,例如git ls-files
和git read-tree
,读取由命令行选项指定的gitignore
pattern,或从命令行选项指定的文件中读取。
而更高级别的Git工具,例如git status
和git add
,使用上述来源的pattern。
Pattern Format:
#
开头的行用作注释。对于以hash开头的pattern,在第一个hash前放置一个\
。\
转义。!
起到否定pattern排除的作用,任何被此前的pattern排除的匹配文件都将再次包含在内。
!
修饰文件的父目录,则无法重新包含该文件,包含文件的任何pattern都无效,无论它们是在哪里定义的。!
开头的pattern文本需要用\
转义。/
用作目录分隔符,可能出现在pattern的任何位置。
/
,则该pattern是相对于特定gitignore
文件本身的目录级别的,否则pattern也可能在gitignore
级别以下的任何级别匹配。/
,则该pattern将仅匹配目录,否则该pattern可以匹配文件和目录。*
匹配除/
以外的任何内容。?
匹配除/
之外的任何一个字符。[a-zA-Z]
,可用于匹配范围内的字符之一。**
具有特殊含义:
**
后跟/
表示在所有目录中都匹配。**
匹配里面的所有内容,深度无限制。/
后跟**
,/
匹配零个或多个目录。*
组合被视为常规星号,将根据之前的规则进行匹配。如果要停止跟踪当前track的文件,可以使用git rm --cached
。
访问工作树中的.gitignore
文件时,Git不遵循符号链接。当从索引或树访问文件而不是从文件系统访问文件时,这可以保持行为一致。
说明:符号链接,也称软链接,是一类特殊的文件,其包含有一条以绝对路径或者相对路径的形式指向其它文件或者目录的引用。
ProGit对.gitattributes
有相应的描述。
.gitattributes
是一个需要写入内容的文件,用于定义每个路径的属性。
.gitattributes
文件中的每一行格式为pattern attr1 attr2 ...
:
#
开头的行将被忽略,视作注释。对于给定路径,每个属性的状态可能是:
Set
:只列出属性列表中的属性名称,指定特定的属性值true
。Unset
:列出以属性列表中的属性名称,加上-
前缀,指定特定的属性值false
。Set to a value
:列出以属性列表中的属性名称,加上=
和属性值后缀,指定特定字符串的属性值。Unspecified
:没有pattern匹配路径,并且没有说明路径是否具有属性。当多个pattern与路径匹配时,后面的行会覆盖前面的行,此覆盖是按属性完成的。
pattern匹配路径的规则与.gitignore
文件中的规则基本相同,不同点在于:
属性分配给路径的优先级(从高到低):
$GIT_DIR/info/attributes
文件.gitattributes
文件.gitattributes
文件(从文件所在目录开始直至工作树,包含.gitattributes
的目录离相关路径越远,其优先级越低)当工作树中缺少.gitattributes
文件时,索引中的路径将用作后备。在checkout
过程中,使用索引中的.gitattributes
,然后将工作树中的文件用作后备。
属性配置的位置选择:
$GIT_DIR/info/attributes
文件。.gitattributes
文件。core.attributesFile
配置选项指定的文件,与git config
有关,默认值为$XDG_CONFIG_HOME/git/attributes
。如果$XDG_CONFIG_HOME
未设置或为空,则使用$HOME/.config/git/attributes
代替。系统上所有用户的属性都应该放在$(prefix)/etc/gitattributes
文件中。!
为前缀的属性名称可用于覆盖未指定状态路径的属性设置。
ProGit没有专门对.gitkeep
做出规定。
.gitkeep
是一个空文件,用于充当一个空文件夹的占位符。Git不允许track或者commit一个空文件夹,想要提交并显示这样的空文件夹,保持这个项目的结构,就需要.gitkeep
充当占位符。
实际上,.nofile
或者其他的占位文件也可以起到同样的作用。之所以使用.gitkeep
是一种规范,是因为这是一种普遍习惯下的约定俗成。
Windows系统生成以上文件可以借助文本编辑器,也可以记事本txt直接改名。
文本编辑器生成的方法非常简单,略。
Windows记事本txt改名的方法是创建默认的新建文本文档.txt
,更名为.gitattributes.
,即生成.gitattributes
。
请注意更名为.gitattributes.
而不是.gitattributes
。
例如,存在如下的目录结构:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。