订阅本站
收藏本站
微博分享
QQ空间分享

忽略Git中的文件和目录,讲解.gitignore文件的作用

lilin 分类:教程 评论: 加入收藏

本文为你解释.gitignore文件的作用,忽略Git中的文件和目录的内容。通常,在处理使用Git的项目时,您会希望排除将特定文件或目录推送到远程存储库中的情况,.gitignore文件指定Git应该忽略的未跟踪文件。安装Git请参考在Debian 10 Linux系统上安装Git及配置Git的方法。

忽略Git中的文件和目录,讲解.gitignore文件的作用

 

应该忽略哪些文件?

忽略的文件通常是特定于平台的文件,或者是从构建系统自动创建的文件,一些常见的示例包括:

运行时文件,例如日志、锁定、缓存或临时文件。

具有敏感信息(例如密码或API密钥)的文件。

编译的代码,例如.class或.o。

依赖目录,例如/vendor或/node_modules。

构建目录,例如/public、/out或/dist。

系统文件,如.DS_Store或Thumbs.db。

IDE或文本编辑器配置文件。

1、.gitignore模式

.gitignore文件是纯文本文件,其中每行包含一个文件或目录要忽略的模式。

.gitignore使用通配符模式将文件名与通配符匹配。

2、Comments

以井号(#)开头的行是注释,将被忽略,空行可用于提高文件的可读性并对相关的模式行进行分组。

3、Slash

斜杠(/)表示目录分隔符,模式开头的斜杠相对于.gitignore所在的目录。

如果模式以斜杠开头,则仅在存储库根目录中匹配文件和目录。

如果模式不是以斜杠开头,则它将匹配任何目录或子目录中的文件和目录。

如果模式以斜杠结尾,则仅匹配目录,当目录被忽略时,其所有文件和子目录也将被忽略。

4、文字文件名

简单的模式是没有任何特殊字符的文字文件名。

忽略Git中的文件和目录,讲解.gitignore文件的作用

5、通配符

*-星号符号匹配零个或多个字符。

忽略Git中的文件和目录,讲解.gitignore文件的作用

**-两个相邻的星号符号匹配任何文件或零个或多个目录,当后跟斜杠(/)时,它仅与目录匹配。

忽略Git中的文件和目录,讲解.gitignore文件的作用

?-问号与任何单个字符匹配。

忽略Git中的文件和目录,讲解.gitignore文件的作用

6、方括号

[...]-匹配方括号中包含的任何字符,当两个字符用连字符分隔时-表示字符范围,该范围包括这两个字符之间的所有字符,范围可以是字母或数字。

如果[后面的第一个字符是感叹号(!),则该模式与指定字符集中的任何字符匹配。

忽略Git中的文件和目录,讲解.gitignore文件的作用

7、取反模式

以感叹号(!)开头的模式将否定(重新包括)先前模式忽略的任何文件,此规则的例外是,如果排除了其父目录,则重新包含文件。

忽略Git中的文件和目录,讲解.gitignore文件的作用

 

本地.gitignore及个人无视规则

1、本地.gitignore

通常,本地.gitignore文件位于存储库的根目录中,但是,您可以在存储库中的不同子目录中创建多个.gitignore文件,.gitignore文件中的模式相对于文件所在目录进行匹配。

驻留在较低级别目录(子目录)中的文件中定义的模式优先于较高级别目录中的模式。

本地.gitignore文件与其他开发人员共享,并且应包含对存储库的所有其他用户有用的模式。

2、个人无视规则

应在.git/info/exclude文件中设置特定于本地存储库且不应分发到其他存储库的模式。

例如,您可以使用此文件来忽略个人项目工具中生成的文件。

 

全局.gitignore

Git还允许您创建一个全局.gitignore文件,您可以在其中为本地系统上的每个Git存储库定义忽略规则。

该文件可以命名为任意名称,并存储在任何位置,保留此文件的最常见位置是主目录,您必须手动创建文件并将Git配置为使用它。

例如,要将~/.gitignore_global设置为全局Git忽略文件,您可以执行以下操作:

1、创建文件:

touch ~/.gitignore_global

2、将文件添加到Git配置:

git config --global core.excludesfile ~/.gitignore_global

3、使用文本编辑器打开文件,然后向其中添加规则。

全局规则对于忽略您永远不想提交的特定文件特别有用,例如带有敏感信息的文件或已编译的可执行文件。

 

忽略以前提交的文件

您的工作副本中的文件可以被跟踪也可以被跟踪。

要忽略以前提交的文件,您需要取消暂存并将其从索引中删除,然后在.gitignore中为该文件添加规则:

git rm --cached filename

--cached选项告诉git不要从工作树中删除文件,而只是从索引中删除它。

要递归删除目录,请使用-r选项:

git rm --cached filename

如果要同时从索引和本地文件系统中删除文件,请省略--cached选项。

递归删除文件时,使用-n选项将执行“dry run”并显示要删除的文件:

git rm -r -n directory

参考:在Linux中使用Rm命令的方法:删除多个文件及目录/文件夹,删除前提示。

 

调试.gitignore文件

有时,确定为什么要忽略特定文件可能会很困难,尤其是在使用多个.gitignore文件或复杂模式的情况下,在这里,带有-v选项的git check-ignore命令很方便,它使git显示有关匹配模式的详细信息。

例如,要检查为什么忽略www/yarn.lock文件,可以运行:

git check-ignore -v www/yarn.lock

输出显示gitignore文件的路径,匹配行的编号和实际模式:

www/.gitignore:31:/yarn.lock  www/yarn.lock

命令还接受多个文件名作为参数,并且文件不必存在于您的工作树中。

 

显示所有忽略的文件

带有--ignored选项的git status命令显示所有被忽略文件的列表:

git status --ignored

 

结论

.gitignore文件使您可以从检入存储库中排除文件,该文件包含用于描述应忽略哪些文件和目录的定位模式。

 

TAG:

文章评论

留言与评论(共有 0 条评论)
   
验证码: