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

参考:

『现学现忘』Git基础 — 19、Git中忽略文件的更多相关文章

  1. 『现学现忘』Git基础 — 14、Git基础操作的总结与补充

    目录 1.Git本地版本库结构 2.Git常用操作方法 3.补充:添加多个文件到暂存区 4.补充:提交操作未写备注 5.补充:从工作区直接提交到版本库 1.Git本地版本库结构 如下图所示: 工作区( ...

  2. 『现学现忘』Git基础 — 37、标签tag(二)

    目录 5.共享标签 6.删除标签 7.修改标签指定提交的代码 8.标签在.git目录中的位置 9.本文中所使用到的命令 提示:接上一篇文章内容. 5.共享标签 默认情况下,git push 命令并不会 ...

  3. 『现学现忘』Git基础 — 5、Git的协作模式

    目录 1.分布式工作流程 2.集中式工作流 3.分支工作流 4.GitFlow 工作流(最流行) 5.Forking 工作流(偶尔使用) 6.总结 1.分布式工作流程 与传统的集中式版本控制系统(CV ...

  4. 『现学现忘』Git基础 — 13、Git的基础操作

    目录 1.Git最基础的使用方式 (1)初始化本地版本库 (2)查看文件的状态 (3)把文件添加到暂存区 (4)把暂存区的内容提交到本地版本库 2.总结本文用到的Git命令 1.Git最基础的使用方式 ...

  5. 『现学现忘』Git基础 — 18、Git对象的总结

    目录 1.Git操作最基本的流程 2.工作目录中文件的状态 3.Git效率说明 提示:前面三篇文章已经分别的对blob对象.tree对象.commit对象进行了详细的说明,这篇文章我们总结一下,Git ...

  6. 『现学现忘』Git基础 — 21、git diff命令

    目录 1.git diff 命令说明 2.比较工作区与暂存区中文件的差别 3.比较暂存区与本地库中文件的差别 4.总结git diff命令常见用法 5.总结 1.git diff 命令说明 在comm ...

  7. 『现学现忘』Git基础 — 22、Git中文件重命名

    目录 1.用学过的命令进行文件重命名 2.使用git mv命令进行文件重命名 我们这篇文章来说说在Git中如何进行文件重命名. 提示一下,下面所说明的是对已经被Git管理的文件进行重命名,未被Git追 ...

  8. 『现学现忘』Git基础 — 2、Git和SVN的区别

    1.Git和SVN的区别 (1)SVN(集中式版本管理系统) 集中式的版本控制系统都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者 ...

  9. 『现学现忘』Git基础 — 3、Git介绍

    目录 1.Git的历史 2.Git的特点 3.Git在项目协作开发中所解决的问题 1.Git的历史 Git是目前世界上最先进的分布式版本控制系统,开源.免费. Git 是 Linus (林纳斯)为了帮 ...

  10. 『现学现忘』Git基础 — 4、Git下载与安装

    目录 1.Git下载 2.Git在Windows下的详细安装 3.验证Git是否安装成功 1.Git下载 进入官方地址下载Git客户端:https://git-scm.com/download/win ...

随机推荐

  1. java 基础知识(三)

    Arraylist与Vector的区别 清浅池塘 程序员,专栏:Java那些事儿唯一作者,咨询前请先点详细资料   162 人赞同了该文章 这几天工作有点忙,有很多代码需要写,更新文章有点慢,说声抱歉 ...

  2. 什么是原子操作?在 Java Concurrency API 中有哪些原 子类(atomic classes)?

    原子操作(atomic operation)意为"不可被中断的一个或一系列操作" . 处理器使用基于对缓存加锁或总线加锁的方式来实现多处理器之间的原子操作. 在 Java 中可以通 ...

  3. 在 Spring中如何注入一个java集合?

    Spring提供以下几种集合的配置元素: 类型用于注入一列值,允许有相同的值. 类型用于注入一组值,不允许有相同的值. 类型用于注入一组键值对,键和值都可以为任意类型. 类型用于注入一组键值对,键和值 ...

  4. 解释Spring支持的几种bean的作用域?

    Spring框架支持以下五种bean的作用域: singleton :bean在每个Spring ioc 容器中只有一个实例. prototype:一个bean的定义可以有多个实例. request: ...

  5. 服务端处理 Watcher 实现 ?

    1.服务端接收 Watcher 并存储 接收到客户端请求,处理请求判断是否需要注册 Watcher,需要的话将数据节点 的节点路径和 ServerCnxn(ServerCnxn 代表一个客户端和服务端 ...

  6. 学习Git(二)

    常用命令 git add 添加 git status 查看状态 git status -s 状态概览 git diff 对比 git diff --staged 对比暂存区 git commit 提交 ...

  7. Effective Java —— 消除过期的对象引用

    本文参考 本篇文章参考自<Effective Java>第三版第七条"Eliminate obsolete object references" Memory leak ...

  8. web开发者踏入人工智能的利器_Tensorflow.js

    前言 最近公司向员工搜集公司杂志的文章,刚好最近学习了机器学习相关课程.为了赚取购买课程的费用,所以写了如下文章投稿赚取稿费. 如下文章可能涉及一些我所购买课程的内容,所以不便将所有资源进行展示. 当 ...

  9. Exchange 2013 清空邮箱

    在某些应用场景中,需要清空用户邮箱的所有数据.如果使用Outlook web app或者Outlook 的邮件删除方式,对数以千计的邮件来说,实在不是一个好办法.exchange管理员可以使用&quo ...

  10. uni-app 解析后台接口返回的HTML

    正常使用rich-text是可以解决问题的,但是在支付宝小程序中不显示,在文档中看到" 支付宝小程序 nodes 属性只支持使用 Array 类型.如果需要支持 HTML String,则需 ...