1、忽略文件说明
有些时候,你必须把某些文件放到Git工作目录中,但又不能提交它们到本地版本库,通常都是些自动生成的文件、日志文件、系统缓存文件、编译过程中创建的临时文件,或者保存了数据库密码的配置文件、人隐私文件等等,每次执行git status
命令时,都会显示Untracked files ...(未被跟踪)
,有强迫症的童鞋心里肯定不爽。
正常来说,这些文件都是不应该被提交到版本库,倘若一不留神提交到版本库,要么泄露机密信息,要么造成经济损失,要么对团队其他人工作造成不便。
好在Git考虑到了大家的感受,这个问题解决起来也很简单,在Git工作区的根目录下创建一个特殊的.gitignore
文件,然后把要忽略的文件名填进去,并且把.gitignore
文件提交到本地版本库中。之后Git就会自动忽略这些文件,再运行git status
命令时就不对其进行检测了。
即:"并不是所有的牛奶都叫特仑苏",在版本控制系统中也有相似的表达,那就是"并不是所有的文件都需要提交到本地版本库"。
2、忽略文件的原则
-
忽略操作系统自动生成的文件,保持项目在不同操作系统中的纯粹性和整洁度。
-
忽略编译生成的中间文件、可执行文件等,比如Java编译产生的
.class
文件,即:忽略工具软件自动生成的文件,避免因个性化配置而产生的工作障碍。
-
忽略自己带有敏感信息的配置文件,比如存放口令的配置文件。
目标:只提交必要文件,忽略无用文件,尽可能考虑多种情况,不给他人制造麻烦。
3、.gitignore
忽略规则
文件 .gitignore
的格式规范如下:
- 所有空行或者以
#
开头的行都会被 Git 忽略。 - 可以使用标准的 glob 模式匹配,它会递归地应用在整个工作区中。
- 匹配模式可以以(
/
)开头,防止递归。 - 匹配模式最后跟
/
说明要忽略的是目录。 - 要忽略指定模式以外的文件或目录,可以在模式前加上叹号(
!
)取反。
所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。
- 以#开头的行用作注释。
- 星号(
*
)匹配零个或多个任意字符。 -
[abc]
匹配任何一个列在方括号中的字符 (这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c); - 问号(
?
)只匹配一个任意字符。 - 如果在方括号中使用短划线分隔两个字符, 表示所有在这两个字符范围内的都可以匹配(比如
[0-9]
表示匹配所有 0 到 9 的数字)。 - 使用两个星号(
**
)表示匹配任意中间目录,比如a/**/z
可以匹配a/z
、a/b/z
或a/b/c/z
等。
我们再看一个 .gitignore
文件的例子:
# 1.忽略public下的所有目录及文件
/public/*
# 2.不忽略/public/assets,就是特例的意思,assets文件不忽略
!/public/assets
# 3.忽略具体的文件
index.html
# 4.忽略所有的java文件
*.java
# 5.忽略 a.java b.java
[ab].java
# 6.忽略 doc/ 目录及其所有子目录下的 .pdf 文件
doc/**/*.pdf
# 7.忽略 doc/notes.txt,但不忽略 doc/server/arch.txt
doc/*.txt
# 8.忽略任何目录下名为 build 的文件夹
build/
# 9.只忽略当前目录下的 TODO 文件,而不忽略 subdir/TODO文件
/TODO
要养成一开始就为你的新仓库设置好
.gitignore
文件的习惯,以免将来误提交这类无用的文件。
参考:
网友评论