码迷,mamicode.com
首页 > 其他好文 > 详细

GitHub gitignore官方文档翻译

时间:2015-07-04 12:41:05      阅读:383      评论:0      收藏:0      [点我收藏+]

标签:github   版本控制   git   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官方文档翻译

标签:github   版本控制   git   gitignore   

原文地址:http://blog.csdn.net/zhjali123/article/details/46752917

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!