『现学现忘』Git基础 — 19、Git中忽略文件

1、忽略文件说明

有些时候,你必须把某些文件放到Git工作目录中,但又不能提交它们到本地版本库,通常都是些自动生成的文件、日志文件、系统缓存文件、编译过程中创建的临时文件,或者保存了数据库密码的配置文件、人隐私文件等等,每次执行git status命令时,都会显示Untracked files ...(未被跟踪),有强迫症的童鞋心里肯定不爽。

正常来说,这些文件都是不应该被提交到版本库,倘若一不留神提交到版本库,要么泄露机密信息,要么造成经济损失,要么对团队其他人工作造成不便。

好在Git考虑到了大家的感受,这个问题解决起来也很简单,在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,并且把.gitignore文件提交到本地版本库中。之后Git就会自动忽略这些文件,再运行git status命令时就不对其进行检测了。

即:”并不是所有的牛奶都叫特仑苏”,在版本控制系统中也有相似的表达,那就是”并不是所有的文件都需要提交到本地版本库”。

2、忽略文件的原则

  1. 忽略操作系统自动生成的文件,保持项目在不同操作系统中的纯粹性和整洁度。
  2. 忽略编译生成的中间文件、可执行文件等,比如Java编译产生的.class文件,
    即:忽略工具软件自动生成的文件,避免因个性化配置而产生的工作障碍。
  3. 忽略自己带有敏感信息的配置文件,比如存放口令的配置文件。

目标:只提交必要文件,忽略无用文件,尽可能考虑多种情况,不给他人制造麻烦。

3、.gitignore忽略规则

文件 .gitignore 的格式规范如下:

  • 所有空行或者以 # 开头的行都会被 Git 忽略。
  • 可以使用标准的glob模式匹配,它会递归地应用在整个工作区中。
  • 匹配模式可以以(/)开头,防止递归。
  • 匹配模式最后跟/说明要忽略的是目录。
  • 要忽略指定模式以外的文件或目录,可以在模式前加上叹号(!)取反。

所谓的glob模式是指shell所使用的简化了的正则表达式。

  • 以#开头的行用作注释。
  • 星号(*)匹配零个或多个任意字符。
  • [abc]匹配任何一个列在方括号中的字符 (这个例子要么匹配一个a,要么匹配一个b,要么匹配一个 c);
  • 问号(?)只匹配一个任意字符。
  • 如果在方括号中使用短划线分隔两个字符, 表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)。
  • 使用两个星号(**)表示匹配任意中间目录,比如 a/**/z 可以匹配 a/za/b/za/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文件的习惯,以免将来误提交这类无用的文件。

参考:

商匡云商
Logo
对比商品
  • 合计 (0)
对比
0
购物车