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文件的习惯,以免将来误提交这类无用的文件。

参考:

最新文章

  1. PHP中"->"和"=>"的区别
  2. 【GDI+】继续图形的问题
  3. Single Number-C++中的异或
  4. pageControl设置不居中显示,居左或居右
  5. H5单页面架构:自定义路由 + requirejs + zepto + underscore
  6. PLA 多维情况下的vc维
  7. js坚持不懈之17:onmousedown、onmouseup 以及 onclick 事件
  8. python从开始到放弃的途中一直很菜的day13
  9. docker load 镜像时出现:open /var/lib/docker/tmp/docker-import-500852078/repositories: no such file or dir
  10. Python包管理工具——pip
  11. 学习笔记--python中使用多进程、多线程加速文本预处理
  12. sql 查询所有子节点示例
  13. 用ASP.NET MVC仿站糗事百科
  14. Array Division CodeForces - 808D (构造+实现)
  15. Hash dump神器 (转)
  16. vSphere Replication:虚拟机的保护伞
  17. codeforces 792D - Paths in a Complete Binary Tree
  18. TCP与UDP的差别以及TCP三次握手、四次挥手
  19. 19.Class的基本语法
  20. 【[SDOI2009]Elaxia的路线】

热门文章

  1. 创建自定义ClassLoader,绕过双亲委派
  2. Xml 映射文件中,除了常见的 select|insert|updae|delete 标签之外,还有哪些标签?
  3. 有哪些不同类型的IOC(依赖注入)方式?
  4. mybatis基础(全)
  5. 什么是 Busy spin?我们为什么要使用它?
  6. mysql的cpu飙升原因及处理
  7. 前端进阶(8) - 前端开发需要了解的工具集合:webpack, eslint, prettier, ...
  8. html5的video元素学习手札
  9. 直接使用sublime编译stylus
  10. ubantu系统之 lunch时报错:no such file /....../.lunchrc