GitHub gitignore官方文档翻译

搜索下吧!贴的都是写细枝末节,所以自己翻译下官方文档吧。文档地址

名称:

gitignore:指定不想被跟踪的文件(跟踪:untrack,等同于 同步、版本控制)

语法:

$HOME/.config/git/ignore, $GIT_DIR/info/exclude, .gitignore

($GIT_DIR是指.git文件,就是使用git init后生成的隐藏文件。如果你设置了GIT_DIR环境变量,那就会被覆盖.git文件,这样做不好哦)

详细描述:

gitignore文件用于指定不想跟踪(同步)的文件,已经被Git跟踪的文件不会受到印象。

gitignore文件的每一行都指定了一种模式(pattern)。当决定是否要忽略某一路径时,git会从多个文件源检查gitignore模式。并依照下文的顺序,从高优先级——》低优先级(同一优先级,最后一个匹配的模式决定了是否进行忽略)进行匹配。

模式读取来源:

1.支持gitignore的命令行(commadn line) (如git ls-files)

2. .gitignore文件中读取,目录是当前命令行的目录,或者其父目录。并且低层次的父目录会覆盖高层次的父目录。所以该模式和.gitignore文件的位置有关系,通常project中都会有一个.gitignore文件,因为他在目录中层次最低,所以优先级最高(可覆盖上层规则)。

3.$GIT_DIR/info/exclude

4.被core.excludesFile配置变量指定的文件

选那个文件存放模式:

1.需要被版本控制,通过clone发布到别的仓库:写进.gitignore文件里(通过上下文的语义可以看出,小明复制了小强的A仓库,这个复制的就是别的仓库了)

2.指定一个仓库,不被别人仓库共享的:写进$GIT_DIR/info/exclude文件里 (例如一个你自己编写的测试文件,就没必要分享给别人了)

3.在任何情况下都希望被忽略的:在~/.gitconfig目录下core.excludesFile。该默认值是$XDG_CONFIG_HOME/git/ignore ,如果$XDG_CONFIG_HOME/git/ignore 是空或未设置,就用$HOME/.config/git/ignore代替。 (上面说的$XDG_CONFIG_HOME 是一些环境变量,类似PATH 一般类linux中有指定。Ubuntu就有$HOME这个目录,其他也不清楚了⊙﹏⊙b汗)

底层的git管道工具(就是过滤的意思吧!linux的管道符)如git list-files、git read-tree,通过指定的命令行选项 读取gitignore模式,或从文件中读取。高级的git工具如git status、git add将从上文指定的来源读取模式。

模式格式:

1.空行不匹配任何文件,,可以用来分块增加可读性

2.以#开头作为 注释,Put a backslash ("\&;) in front of the first hash for patterns that begin with a hash.(不太理解,怎么还和hash有关了,有谁知道吧?)

3.末尾的空格被忽略,除非被反斜杠"\&;(转义符)引用。

4.前缀!用来反模式:就是去反的操作。 如果目录被ignore了,文件取反也不能被track跟踪。

5.后缀斜线/,只匹配目录和其下面的文件,不匹配该名称的文件。 如hello/ 不匹配hello文件。

6.如果模式中没有反斜杠/,git将把它当做shell统配符并且目录相对于.gitignore文件的位置。

7.否则将被当做shell中的通配符处理,并且通配符不能代表/ 。如"Documentation/*.html"匹配"Documentation/git.html" 但是不匹配"Documentation/ppc/ppc.html" or "tools/perf/Documentation/perf.html" 。

8.头部的斜杠"\&;匹配开头的路径(也就是目录了),例如:"/*.c"匹配"cat-file.c",但不匹配"mozilla-sha1/sha1.c"。

两个连续的星号"**",匹配所有的路径,有着特殊的含义:

1.开头两星,跟一斜线,匹配所含有路径。如:“**/foo”,匹配任意地方的foo文件或目录。“**foo/bar"匹配紧跟在任意foo目录下的文件或目录”bar".

2.末尾“/**",匹配其内的任何东西。如"abc/**",匹配abc目录下的所有文件。

3.斜杠两星斜杠 ,匹配0或任意目录。如“a/**/b",匹配"a/b" "a/c/b" "a/c/d/b"

4.其他连续的星号视为无效。

注意:

gitignore文件的目的是确保还未被 跟踪的文件,不会被跟踪。

停止已被跟踪的文件,使用git rm –cached

举例:如何只track某一文件夹下的文件:

$ cat .gitignore# exclude everything except directory foo/bar/*!/foo/foo/*!/foo/bar这个通配符不能代表”/" 即目录很关键。得用**代表任意目录,这和android那个proguard差不多

我们首先去了象鼻山,那里景色秀丽神奇,

GitHub gitignore官方文档翻译

相关文章:

你感兴趣的文章:

标签云: