Git.gitignore⽂件配置规则详解
规则作⽤
1. /mtk 过滤整个⽂件夹
2. *.zip 过滤所有.zip⽂件
3. /mtk/do.c 过滤某个具体⽂件
4. !/ 追踪(不过滤)某个具体⽂件
5. 注意:如果你创建.gitignore⽂件之前就push了某⼀⽂件,那么即使你在.gitignore⽂件中写⼊过滤该⽂件的规则,该规则也不会起作
⽤,git仍然会对该⽂件进⾏版本管理。
配置语法
1. 以斜杠“/”开头表⽰⽬录;
2. 以星号“*”通配多个字符;
3. 以问号“?”通配单个字符
4. 以⽅括号“[]”包含单个字符的匹配列表;
5. 以叹号“!”表⽰不忽略(跟踪)匹配到的⽂件或⽬录。
6. 注意: git 对于 .gitignore配置⽂件是按⾏从上到下进⾏规则匹配的
忽略⽂件配置的三种⽅法
(1)在Git项⽬中定义 .gitignore ⽂件
这种⽅式通过在项⽬的某个⽂件夹下定义 .gitignore ⽂件,在该⽂件中定义相应的忽略规则,来管理当前⽂件夹下的⽂件的Git提交⾏为。
.gitignore ⽂件是可以提交到共有仓库中,这就为该项⽬下的所有开发者都共享⼀套定义好的忽略规则。
在 .gitingore ⽂件中,遵循相应的语法,在每⼀⾏指定⼀个忽略规则。如
*.log
*.temp
/vendor
(2)在Git项⽬的设置中指定排除⽂件
这种⽅式只是临时指定该项⽬的⾏为,需要编辑当前项⽬下的 .git/info/exclude ⽂件,然后将需要忽略提交的⽂件写⼊其中。
需要注意的是,这种⽅式指定的忽略⽂件的根⽬录是项⽬根⽬录。
(3)定义Git全局的 .gitignore ⽂件
除了可以在项⽬中定义 .gitignore ⽂件外,还可以设置全局的 git .gitignore ⽂件来管理所有Git项⽬的⾏为。这种⽅式在不同的项⽬开发者之间是不共享的,是属于项⽬之上Git应⽤级别的⾏为。
这种⽅式也需要创建相应的 .gitignore ⽂件,可以放在任意位置。然后在使⽤以下命令配置Git:
git config --ludesfile ~/.gitignore
Git 忽略规则优先级
在 .gitingore ⽂件中,每⼀⾏指定⼀个忽略规则,Git 检查忽略规则的时候有多个来源,它的优先级如下
(由⾼到低):
从命令⾏中读取可⽤的忽略规则
1. 当前⽬录定义的规则
2. ⽗级⽬录定义的规则,依次地推
3. $GIT_DIR/info/exclude ⽂件中定义的规则
4. ludesfile中定义的全局规则
Git 忽略规则匹配语法
在 .gitignore ⽂件中,每⼀⾏的忽略规则的语法如下:
1. 空格不匹配任意⽂件,可作为分隔符,可⽤反斜杠转义
2. #开头的模式标识注释,可以使⽤反斜杠进⾏转义
3. ! 开头的模式标识否定,该⽂件将会再次被包含,如果排除了该⽂件的⽗级⽬录,则使⽤ ! 也不会再次被包含。可以使⽤反斜杠进⾏转
义
4. / 结束的模式只匹配⽂件夹以及在该⽂件夹路径下的内容,但是不匹配该⽂件
5. / 开始的模式匹配项⽬跟⽬录
如果⼀个模式不包含斜杠,则它匹配相对于当前 .gitignore ⽂件路径的内容,如果该模式不在 .gitignore ⽂件中,则相对于项⽬根⽬录
6. **匹配多级⽬录,可在开始,中间,结束git使用详解
7. ?通⽤匹配单个字符
8. []通⽤匹配单个字符列表
常⽤匹配⽰例:
1. bin/: 忽略当前路径下的bin⽂件夹,该⽂件夹下的所有内容都会被忽略,不忽略 bin ⽂件
2. /bin: 忽略根⽬录下的bin⽂件
3. /*.c: 忽略 cat.c,不忽略 build/cat.c
4. debug/*.obj: 忽略 debug/io.obj,不忽略 debug/common/io.obj 和 tools/debug/io.obj
5. **/foo: 忽略/foo, a/foo, a/b/foo等
6. a/**/b: 忽略a/b, a/x/b, a/x/y/b等
7. !/bin/run.sh: 不忽略 bin ⽬录下的 run.sh ⽂件
8. *.log: 忽略所有 .log ⽂件
9. config.php: 忽略当前路径的 config.php ⽂件
注意:如果你创建.gitignore⽂件之前就push了某⼀⽂件,那么即使你在.gitignore⽂件中写⼊过滤该⽂件的规则,该规则也不会起作⽤,git仍然会对该⽂件进⾏版本管理。
参考:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论