为什么要有.gitignore文件

项目中经常会生成一些Git系统不需要追踪(track)的文件。典型的是在编译生成过程中 产生的文件或是编程器生成的临时备份文件。当然,你不追踪(track)这些文件,可以 平时不用"git add"去把它们加到索引中。 但是这样会很快变成一件烦人的事,你发现项目中到处有未追踪(untracked)的文件; 这样也使"git add ." 和"git commit -a" 变得实际上没有用处,同时"git status"命令的输出也会有它们。你可以在你的顶层工作目录中添加一个叫".gitignore"的文件,来告诉Git系统要忽略 掉哪些文件。

忽略文件原则

  1. 忽略操作系统自动生成的文件,比如缩略图等;
  2. 忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件;
  3. 忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。

语法规范(熟悉正则很容易理解)

  • 空行或是以#开头的行即注释行将被忽略;
  • 以斜杠 “/” 结尾表示目录;
  • 以星号 “*” 通配多个字符;
  • 以问号 “?” 通配单个字符
  • 以方括号 “[]” 包含单个字符的匹配列表;
  • 以叹号 “!” 表示不忽略(跟踪)匹配到的文件或目录;
  • 可以在前面添加斜杠 “/” 来避免递归,下面的例子中可以很明白的看出来与下一条的区别。

配置文件示例

# 忽略 .a 文件
*.a # 但否定忽略 lib.a, 尽管已经在前面忽略了 .a 文件
!lib.a # 仅在当前目录下忽略 TODO 文件, 但不包括子目录下的 subdir/TODO
/TODO # 忽略 build/ 文件夹下的所有文件
build/ # 忽略 doc/notes.txt, 不包括 doc/server/arch.txt
doc/*.txt # 忽略所有的 .pdf 文件 在 doc/ directory 下的
doc/**/*.pdf

配置文件模板

Github 上为开发者提供了各种环境以及各种编程语言的 gitignore 文件配置模板:https://github.com/github/gitignore

本人使用的是python项目的gitgnore文件 url:https://github.com/github/gitignore/blob/master/Python.gitignore

.gitignore分为全局配置和局部配置,这个很容易理解全局配置是指修改当前.gitignore文件本机的git中的全部项目都起作用,局部的配置是指每个项目下的.gitignore文件只对向前所在的项目起作用。

局部的配置只需要在项目目录中创建 .gitignore 文件即可。

全局的配置设置方法为:

$git config –global core.excludesfile ~/.gitignore

这样,修改 ~/.gitignore 这个文件将作用于所有 git 项目,并且作用于项目实例中的所有被跟踪的目录。
# Windows: (使用windows用户,过滤存放图片文件夹下生成的缩略图)
Thumbs.db
ehthumbs.db
Desktop.ini # Python:
*.py[cod]
*.so
*.egg
*.egg-info
dist
build
target
.idea
.classpath
.project
.settings
*.iml
.gitignore

总结

  1. 忽略某些文件时,需要编写.gitignore
  2. .gitignore文件本身要放到版本库里,并且可以对.gitignore做版本管理!
  3. 从版本库中删除
    $ git rm test.txt
    rm 'test.txt'
    $ git commit -m "remove test.txt"
 

参考链接:http://www.chengxusheji.com/archives/121.html

http://kuanghy.github.io/2016/05/17/gitignore

http://outofmemory.cn/code-snippet/37452/git-ignorefiles-example

如何编写.gitignore文件的更多相关文章

  1. 编写.gitignore文件的几个小技巧

    记录几个编写.gitignore文件的小技巧,可能你早就知道了,但我是google了一番才找到写法. 忽略所有名称为bin的文件夹 bin/ 只忽略第一级目录中,名称为bin的文件夹 /bin/ 忽略 ...

  2. 如何编写gitignore文件

    原文链接:https://www.cnblogs.com/jingtyu/p/6831772.html 为什么要有.gitignore文件 项目中经常会生成一些Git系统不需要追踪(track)的文件 ...

  3. 编写.gitignore 文件

    讲代码 放入 Git 仓库中进行版本控制管理时,有些文件是不需要放入Git 中,比如 Maven 生成的target 目录,IDEA/Eclipse的工程文件, 在项目的根目录 下 添加一个名为.gi ...

  4. .gitignore文件如何编写?

    .gitignore文件即 项目中不需要被追踪(track)且上传到git系统的文件 <1>忽略文件的原则 a.忽略操作系统自动生成的文件,比如缩略图等 b.忽略编译生成的中间文件.可执行 ...

  5. gitignore文件简单编写规则

    一.生成.gitignore文件 1.进入项目根目录,打开终端: 2.输入 vi .gitignore 创建并打开隐藏文件.gitignore: 二 . 设置要忽略上传的文件或文件夹 1.过滤整个文件 ...

  6. .gitignore文件编写规则

    1.gitignore说明 在使用git的过程中,一般我们总会有些文件无需纳入git的管理,也不希望它们总出现在未跟踪文件列表,这些文件通常是日志文件.临时文件.编译产生的中间文件.工具自动生成的文件 ...

  7. .gitignore文件不起作用

    当我们用git时常常会习惯把我们不想上传到远程代码库中的一些本地文件(夹)放在一个叫做.gitignore的文件中,例如常见的本地build文件夹,一些IDE如Intellig,Eclipse的项目管 ...

  8. Git与GitHub学习笔记(三).gitignore文件忽略和删除本地以及远程文件

    一.Git提供了文件忽略功能.当对工作区某个目录或者某些文件设置了忽略后,git将不会对它们进行追踪 HELP:如何在IntelliJ IDEA中使用.ignore插件忽略不必要提交的文件 问题:最近 ...

  9. git中.gitignore 文件

    现在项目的根目录放了 .gitignore 文件,并且git远程仓库的项目根目录已经有了 logs文件夹. 由于每次本地运行项目,都会生成新的log文件,但是我并不想提交logs文件夹里面的内容,所以 ...

随机推荐

  1. Java生鲜电商平台-生鲜电商高并发下的接口幂等性实现与代码讲解

    Java生鲜电商平台-生鲜电商高并发下的接口幂等性实现与代码讲解 说明:Java生鲜电商平台-生鲜电商高并发下的接口幂等性实现与代码讲解,实际系统中有很多操作,是不管做多少次,都应该产生一样的效果或返 ...

  2. 1、json背景

    教程链接 链接:http://pan.baidu.com/s/1mil4M1M 密码:vwsn JSON (JavaScript对象表示法)是一种轻量级的基于文本的开放标准,被设计用于可读的数据交换, ...

  3. 文本编辑器EditPlus的安装

  4. 操作Document文档

    利用客户端操作Document文档数据 1.创建一个文档(创建数据的过程,向表中去添加数据) 请求方式:Post 请求地址:es所在IP:9200/索引库/Type/文档ID(可给可不给,代表唯一标识 ...

  5. JS中的 '+' 号

    当用作单目操作符的时候,+操作符不会对Number类型产生影响.但如果应用在字符串类型上,会将其转换为数字: var a = 25;a =+ a; //对a值没有影响console.log(a); / ...

  6. Windows下运行MapReduce程序出现Could not locate executable null\winutils.exe in the Hadoop binaries.

    运行环境:windows10 64位,虚拟机:Ubuntu Kylin 14.04,Hadoop2.7.1 错误信息: java.io.IOException: Could not locate ex ...

  7. C++标准库里面没有字符分割函数split,自己编写函数实现字符串分割功能

    #include <vector> #include <string> #include <iostream> using namespace std; vecto ...

  8. 【Go语言系列】1.2、GO语言简介:哪些大公司正在使用Go语言

    Go语言的强项在于它适合用来开发网络并发方面的服务,比如消息推送.监控.容器等,所以在高并发的项目上大多数公司会优先选择 Golang 作为开发语言. 1.Google 这个不用多做介绍,作为开发Go ...

  9. 绕过QQ群文件下载限速

    绕过QQ群文件下载限速 引言 众所周知,用QQ客户端下载QQ群文件,速度往往被限为10KB/s.这里我们来讲讲如何绕过这一限制. 原始事件发生在2020年2月2日,值武汉疫情爆发,全国各省市纷纷下令推 ...

  10. RTU:EvalRightToUse License for feature adventerprise 1.0 will transition to RightToUse in 10 days. UDI ASR1002-X:JAE2100XXXX

    关于这个log:[Hostname] EvalRightToUse License for feature adventerprise 1.0 will transition to RightToUs ...