.gitignore文件作用及使用方法详解

目录
  • 正文
  • Git 忽略规则优先级
  • Git 忽略规则匹配语法
  • 匹配示例
  • 特殊情况
    • 文件已经提交过
    • 添加一个已经配置忽略的文件
  • 检查文件为什么被忽略
  • gitignore建议

正文

在本地的代码目录中,有些文件或者目录我们并不想提交到仓库中,比如一些运行日志等文件。这样的话,我们提交代码时,就只能一个一个文件去git add,太麻烦了。

为了解决这个问题,Git里面有一个.gitignore文件。可以指定Git需要忽略哪些文件。配置好之后,Git就会自动忽略满足配置的文件。这样,我们就可以尽情的使用git add .来添加文件了。

Git 忽略规则优先级

.gitingore 文件中,每一行指定一个忽略规则,Git 检查忽略规则的时候有多个来源,它的优先级如下(由高到低):

  • 从命令行中读取可用的忽略规则
  • 当前目录定义的规则
  • 父级目录定义的规则,依次递推
  • $GIT_DIR/info/exclude 文件中定义的规则
  • core.excludesfile中定义的全局规则

Git 忽略规则匹配语法

.gitignore 文件中,每一行的忽略规则的语法如下:

  • 空格不匹配任意文件,可作为分隔符,可用反斜杠转义
  • 开头的文件标识注释,可以使用反斜杠进行转义
  • !开头的模式标识否定,该文件将会再次被包含,如果排除了该文件的父级目录,则使用!也不会再次被包含。可以使用反斜杠进行转义
  • /结束的模式只匹配文件夹以及在该文件夹路径下的内容,但是不匹配该文件
  • /开始的模式匹配项目跟目录
  • 如果一个模式不包含斜杠,则它匹配相对于当前.gitignore文件路径的内容,如果该模式不在.gitignore文件中,则相对于项目根目录
  • ** 匹配多级目录,可在开始,中间,结束
  • ? 通用匹配单个字符
  • * 通用匹配零个或多个字符
  • [] 通用匹配单个字符列表

匹配示例

  • bin/: 忽略当前路径下的bin文件夹,该文件夹下的所有内容都会被忽略,不忽略bin文件
  • /bin: 忽略根目录下的bin文件
  • /*.c: 忽略 cat.c,不忽略 build/cat.c
  • debug/*.obj: 忽略 debug/io.obj,不忽略 debug/common/io.objtools/debug/io.obj
  • **/foo: 忽略/foo, a/foo, a/b/foo
  • a/**/b: 忽略a/b, a/x/b, a/x/y/b
  • !/bin/run.sh: 不忽略 bin 目录下的 run.sh 文件
  • *.log: 忽略所有 .log 文件
  • config.php: 忽略当前路径的 config.php 文件

特殊情况

文件已经提交过

这里面有一些特殊情况需要考虑,比如某文件已经被提交过了,之后再对他做了一个.gitignore的忽略的话。忽略是不会生效的,需要我们手动先将缓存删除。

# 删除本地的缓存
git rm -r --cached .
# 重新提交
git commit -am 'gitignore'

添加一个已经配置忽略的文件

再比如,我们忽略了文件夹A,但是现在要往文件夹A中添加代码文件。你会发现你没法把文件夹A中的代码提交。因为文件夹A被忽略了。

# 强制添加
git add -f 文件A/xxx.js
# 正常提交
git commit -am 'xxx'

检查文件为什么被忽略

由于.gitignore文件经常会配置很多内容,某些文件你并不能很直观的知道为什么被忽略了。所以Git提供了一个检查忽略的命令。

git check-ignore -v 文件夹A/xxx.js

gitignore建议

最后,提供一个网上整理的关于不同开发语言项目的.gitignore文件内容的建议:github.com/github/giti…

以上就是.gitignore文件作用及使用方法详解的详细内容,更多关于.gitignore文件的资料请关注我们其它相关文章!

(0)

相关推荐

  • Git配置.gitignore文件忽略被指定的文件上传

    在项目的根目录下建立一个.gitignore的文件(和.git文件同级) .gitignore文件用记事本打开,输入如下内容: ## Ignore Visual Studio temporary files, build results, and ## files generated by popular Visual Studio add-ons. # User-specific files *.suo *.user *.userosscache *.sln.docstates # User-

  • Git中使用.gitignore忽略文件的推送方式

    目录 1 简介 2 Git忽略文件提交方法 2.1 在Git项目中定义 .gitignore 文件 2.2 定义Git全局的.gitignore文件 2.3 在Git项目的设置中指定排除文件 3 忽略规则 4 总结 1 简介 在使用Git管理自己的代码版本时,由于编译生成的中间文件,Git使用SHA-1算法来对文件进行加密,进而得出来一个40位的十六进制加密字符串. 325525d8b1f67b5ddd37956a8a728fd26c4ba5ce 但这种算法对于文本文件有效,对于二进制之类的文件

  • 详解Git.gitignore开发必备建议收藏

    目录 一.为什么使用 .gitignore ? 二.使用规则 2.1 注释 2.2 忽略文件 (1)忽略文件和目录 (2)仅忽略文件 2.3 忽略目录 2.4 使用通配符 2.5 反向操作 2.6 双星号 2.7 其它规则 三.总结 在使用 git 管理项目过程中,.gitignore 文件是必备的文件,下面来详细说一说! 一.为什么使用 .gitignore ? 在一些项目中,我们不想让本地仓库的所有文件都上传到远程仓库中,而是有选择的上传,比如:一些依赖文件(node_modules下的依赖

  • git设置忽略文件.gitignore的方法

    在仓库目录下新建一个名为.gitignore的文件(因为是点开头,没有文件名,没办法直接在windows目录下直接创建,必须通过右键Git Bash,按照linux的方式来新建.gitignore文件).如下图所示. .gitignore文件对其所在的目录及所在目录的全部子目录均有效.通过将.gitignore文件添加到仓库,其他开发者更新该文件到本地仓库,以共享同一套忽略规则. 以下涉及的ignore文件均为如下格式: # 以'#'开始的行,被视为注释. # 忽略掉所有文件名是 foo.txt

  • Mac PyCharm中的.gitignore 安装设置教程

    gitignore是什么文件 就是git软件要忽略的文件列表,如果要忽略某些文件,,在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件. 1. 首先安装.ignore 点击 PyCharm >>> Preferences 点击Plugins >>> 在搜索框输入.ignore >>> 然后安装就OK了. 我这里已经安装了 显示的是卸载 没有安装会显示Install . 安装完成以后 点

  • .gitignore文件作用及使用方法详解

    目录 正文 Git 忽略规则优先级 Git 忽略规则匹配语法 匹配示例 特殊情况 文件已经提交过 添加一个已经配置忽略的文件 检查文件为什么被忽略 gitignore建议 正文 在本地的代码目录中,有些文件或者目录我们并不想提交到仓库中,比如一些运行日志等文件.这样的话,我们提交代码时,就只能一个一个文件去git add,太麻烦了. 为了解决这个问题,Git里面有一个.gitignore文件.可以指定Git需要忽略哪些文件.配置好之后,Git就会自动忽略满足配置的文件.这样,我们就可以尽情的使用

  • Java语言中flush()函数作用及使用方法详解

    最近在学习io流,发现每次都会出现flush()函数,查了一下其作用,起作用主要如下 //------–flush()的作用--------– 笼统且错误的回答: 缓冲区中的数据保存直到缓冲区满后才写出,也可以使用flush方法将缓冲区中的数据强制写出或使用close()方法关闭流,关闭流之前,缓冲输出流将缓冲区数据一次性写出.flash()和close()都使数据强制写出,所以两种结果是一样的,如果都不写的话,会发现不能成功写出 针对上述回答,给出了精准的回答 FileOutPutStream

  • java 使用idea将工程打成jar并创建成exe文件类型执行的方法详解

    第一部分: 使用idea 打包工程jar 1.准备好一份 开发好的 可执行的 含有main方法的 工程. 例如:我随便写的main方法 public static void main(String[] args) throws IOException { Properties properties = System.getProperties(); String osName = properties.getProperty("os.name"); System.out.println

  • Java Spring MVC 上传下载文件配置及controller方法详解

    下载: 1.在spring-mvc中配置(用于100M以下的文件下载) <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <!--配置下载返回类型--> <bean class="or

  • 对Python 多线程统计所有csv文件的行数方法详解

    如下所示: #统计某文件夹下的所有csv文件的行数(多线程) import threading import csv import os class MyThreadLine(threading.Thread): #用于统计csv文件的行数的线程类 def __init__(self,path): threading.Thread.__init__(self) #父类初始化 self.path=path #路径 self.line=-1 #统计行数 def run(self): reader =

  • 对python修改xml文件的节点值方法详解

    这是我的xml文件结构 <?xml version='1.0' encoding='utf-8'?> <annotation> <folder>JPEGImages</folder> <filename>train_2018-05-08_1000.jpg</filename> <path>D:\all_data\2018-05-08\JPEGImages\train_2018-05-08_1000.jpg</path

  • 对python同一个文件夹里面不同.py文件的交叉引用方法详解

    比如有两个模块,一个aa.py,一个bb.py 代码如下: aa.py: #encoding:utf-8 import bb a=1 bb.py: #encoding:utf-8 import aa print aa.a 执行bb.py时,不能执行,打印错误 AttributeError: 'module' object has no attribute 'a' 原因: 如果执行bb的话,这时候bb是__main__,不是module,所以会执行到bb的from aa,这个时候python会执行

  • python文件处理fileinput使用方法详解

    这篇文章主要介绍了python文件处理fileinput使用方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.介绍 fileinput模块可以对一个或多个文件中的内容进行迭代.遍历等操作,我们常用的open函数是对一个文件进行读写操作. fileinput模块的input()函数比open函数更高效和好用,体现在: input()函数生成一个迭代器,保证了在遇到大文件的读取时不会占用太大的内存. 用fileinput对文件进行循环遍历

  • SpringBoot整合MinIO实现文件上传的方法详解

    目录 前言 1. MinIO 简介 2. MinIO 安装 3. 整合 Spring Boot 4. 配置nginx 5. 小结 前言 现在 OSS 服务算是一个基础服务了,很多云服务厂商都有提供这样的服务,价格也不贵,松哥自己的网站用的就是类似的服务. 不过对于中小公司来说,除了购买 OSS 服务之外,也可以自己搭建专业的文件服务器,自己搭建专门的文件服务器的话,曾经比较专业的做法是 FastDFS,松哥之前也专门为之录过视频发在 B 站上,感兴趣的小伙伴可以自行查看.不过 FastDFS 搭

  • php生成并下载word文件到本地实现方法详解

    目录 安装phpword包 准备一个word模板(docx格式) 前端调用代码 PHP处理代码 one more thing 安装phpword包 通过composer安装phpword包.因为是使用thinkphp架构,安装挺方便的. 直接下载phpword压缩包有问题. composer require phpoffice/phpword 准备一个word模板(docx格式) 准备好word模板后,只需要用变量替换需要替换的值,如下图所示,将房东名替换成${name}. 前端调用代码 系统前

随机推荐