文档章节

git官网上关于.gitignore的部分的简要翻译

shede333
 shede333
发布于 2016/11/20 23:20
字数 1174
阅读 126
收藏 0

 

简略的翻译了git官网上关于.gitignore的部分,点击查看原文

§NAME

gitignore - Specifies intentionally untracked files to ignore

§SYNOPSIS

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

§DESCRIPTION

略,点击查看原文

§PATTERN FORMAT

.gitignore文件里表达式的一些用法:

  • A blank line matches no files, so it can serve as a separator for readability.

    一个空行不匹配任何文件,只当做是分隔的作用

  • A line starting with # serves as a comment. Put a backslash ("\") in front of the first hash for patterns that begin with a hash.

    以“#”开头的是注释行。“\”放在表达式前面用来转义

  • Trailing spaces are ignored unless they are quoted with backslash ("\”).

    行尾的空格会被忽略,除非在空格前加“\”才会生效

  • An optional prefix "!" which negates the pattern; any matching file excluded by a previous pattern will become included again. It is not possible to re-include a file if a parent directory of that file is excluded. Git doesn’t list excluded directories for performance reasons, so any patterns on contained files have no effect, no matter where they are defined. Put a backslash ("\") in front of the first "!" for patterns that begin with a literal "!", for example, "\!important!.txt”.

    “!”前缀选项:否定模式,即已经被前面ignore表达式匹配后忽略的文件,重新被包含进git。

    但是,如果此文件的父目录已经被忽略了,那么此文件就不能再重新包含进git,因为处于性能的考虑。git并不会去检索被忽略的目录,所以.gitignore里面的表达式并不会去匹配这些目录下的文件;

    放一个“\”在“!”前面可以转义“!”为一个简单的字符(即失去了否定模式的功能)

    \!file!.txt 匹配文件“!file!.txt”,第一个“!”位于行首,被转义为简单的字符,第二个“!”就是个简单的字符,因为“!”只有放在行首才拥有否定模式的效果

  • If the pattern ends with a slash, it is removed for the purpose of the following description, but it would only find a match with a directory. In other words, foo/ will match a directory foo and paths underneath it, but will not match a regular file or a symbolic link foo (this is consistent with the way how pathspec works in general in Git).

    表达式以“/”结尾的话,只会匹配目录;

    例如“foo/”将只会匹配foo目录和目录里面所有东西,但不会匹配foo文件和foot软连接

  • If the pattern does not contain a slash /, Git treats it as a shell glob pattern and checks for a match against the pathname relative to the location of the .gitignore file (relative to the toplevel of the work tree if not from a .gitignore file).

    如果表达式里面没有“/”,那么git会把表达式当做shell表达式去匹配和.gitignore同级目录下的文件(对于那些不是在.gitignore文件里的表达式,会相对于工作目录去查找),git命令也可以设置ignore表达式

  • Otherwise, Git treats the pattern as a shell glob suitable for consumption by fnmatch(3) with the FNM_PATHNAME flag: wildcards in the pattern will not match a / in the pathname. For example, "Documentation/*.html" matches "Documentation/git.html" but not "Documentation/ppc/ppc.html" or "tools/perf/Documentation/perf.html”.

    通配符“*”不会匹配路径字符串中的“/”,

    "Documentation/*.html" 匹配 "Documentation/git.html” 

    但不匹配"Documentation/ppc/ppc.html" 或者 "tools/perf/Documentation/perf.html”.

  • A leading slash matches the beginning of the pathname. For example, "/*.c" matches "cat-file.c" but not "mozilla-sha1/sha1.c”.

    “/”开头的只匹配当前目录下的东西;

    “/*.c”匹配“cat-file.c”,但不匹配“hello/sha.c”

Two consecutive asterisks ("**") in patterns matched against full pathname may have special meaning:

  • A leading "**" followed by a slash means match in all directories. For example, "**/foo" matches file or directory "foo" anywhere, the same as pattern "foo". "**/foo/bar" matches file or directory "bar" anywhere that is directly under directory "foo".

  • A trailing "/**" matches everything inside. For example, "abc/**" matches all files inside directory "abc", relative to the location of the .gitignore file, with infinite depth.

  • A slash followed by two consecutive asterisks then a slash matches zero or more directories. For example, "a/**/b" matches "a/b", "a/x/b", "a/x/y/b" and so on.

  • Other consecutive asterisks are considered invalid.

    连续的两个星号“**”能匹配完整的路径,但会有些特殊的意思:

    以“**”开头,紧跟着一个“/”会在所有目录下去匹配;例如“**/foo”会匹配任何 叫foo的目录或文件,效果等同于表达式“foo”;"**/foo/bar" 会匹配任何位于foo目录下,名为”bar”的目录或文件 (即foo目录可以再任何地方)。

     

    “/**”会匹配目录下的任何东西;例如“abc/**”,会匹配“abc”目录下的所有文件,不限目录深度,但是“abc”目录的位置必须和“.gitignore”同级。(经过测试,凡是此种“name/**”格式,即以“/**”或者“/*”结尾的,都会限制只在.gitignore同级目录下搜索name文件夹)

    “/**/”匹配0层或多层目录,例如,"a/**/b" 匹配 "a/b", "a/x/b", "a/x/y/b

    其他形式的“**”被认为是无效的

§NOTES

The purpose of gitignore files is to ensure that certain files not tracked by Git remain untracked.

To stop tracking a file that is currently tracked, use git rm --cached.

 

 

© 著作权归作者所有

shede333
粉丝 21
博文 24
码字总数 34707
作品 0
海淀
程序员
私信 提问
【Git 第3课】 安装Git

要用Git,首先肯定要安装它。简要说一下Win,Mac和Linux三种平台的安装方法。 Windows Git的官网(http://git-scm.com)提供了Windows下Git客户端的安装包。也可以去msysGit项目的页面上下载:...

Harry_sir
2015/12/26
18
0
Git 使用指南

Git 的入门教程 网上关于Git比较好的一篇教程有:http://www.bootcss.com/p/git-guide/ 问题集合 回滚操作 Git在提交之前撤销add操作 使用Git 之前,有时因为忘记添加.gitignore文件,所以使用...

thomaslwq
2016/01/14
17
0
《Git 系列》 - Ignoring File

任何语言,一些文件是不能提交的。 Java开发的项目:*.class是不能提交的 C#开发的项目:.dll,.user,obj/,bin/是不能提交的 本人查阅了官方资料,原文不能就不翻译了。 Ignore Type Igno...

Kimisme
2018/01/13
0
0
Git的ignore设置

OC gitignore/Objective-C.gitignore 其他语言 A collection of useful .gitignore templates 单个项目 改动过.gitignore文件之后,在repo的根目录下运行: git rm -r --cached . git add .......

vincentwu08
2016/09/05
22
0
【原创】我的 Git 使用初体验

很久之前在 http://git.oschina.net/ 上创建了一个私有项目 modb ,目的主要是用来学习如何使用 GIT 来开源自己写的东东,中间由于种种原因停顿了很长时间,但是今天,我下定决心一定要将这个...

摩云飞
2014/04/29
0
3

没有更多内容

加载失败,请刷新页面

加载更多

新手转行学java难吗?新手学java需要注意的6个方面!

新手转行在成都学java到底难不难,对于这个问题,我们专门做过一个调查,超过1000名已经在职的java从业者,其中有80%的程序员觉得学java不难,20%的程序员觉得前期有点难,其中对于50%自学的...

Java领航员
50分钟前
3
0
动态规划-硬币问题分析

什么是动态规划 上次对动态规划已经有了个大概的分析。引用维基百科的话就是: dynamic programming is a method for solving a complex problem by breaking it down into a collection of...

AI考拉
58分钟前
2
0
谈谈lucene的DocValues特性之SortedSetDocValuesField

SortedSetDocValuesField与SortedDocValuesField类似但它是一键多值的(注意:lucene的数据模型是支持一键多值的即key-values模型),lucene在实现时会判断是一键一值还是多值,如果单值就调...

FAT_mt
今天
1
0
生产者消费者模式

//尚学堂视频里,不是完整的 public class Movie { /** * 共同的资源 */ private String pic; //flay为true生产,false消费 private boolean flag=true; public synchronized void play(Str......

南桥北木
今天
1
0
使用阿里云镜像安装kubernetes

参考阿里云镜像 https://opsx.alibaba.com/mirror?lang=zh-CN 系统: CentOS / RHEL / Fedora cat <<EOF > /etc/yum.repos.d/kubernetes.repo[kubernetes]name=Kubernetesbaseurl=https......

北漂的我
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部