本博客旨在自我学习使用,如有任何疑问请及时联系博主

1.WHY?

当你使用git add .的时候有没有遇到把你不想提交的文件也添加到了缓存中去?比如项目的本地配置信息,如果你上传到Git中去其他人pull下来的时候就会和他本地的配置有冲突,所以这样的个性化配置文件我们一般不把它推送到git服务器中,但是又为了偷懒每次添加缓存的时候都想用git add .而不是手动一个一个文件添加,该怎么办呢?很简单,git为我们提供了一个.gitignore文件只要在这个文件中申明那些文件你不希望添加到git中去,这样当你使用git add .的时候这些文件就会被自动忽略掉。

2.忽略文件的原则

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

3.使用方法

首先,在你的工作区新建一个名称为.gitignore的文件。然后,把要忽略的文件名填进去,Git就会自动忽略这些文件。不需要从头写.gitignore文件,GitHub已经为我们准备了各种配置文件,只需要组合一下就可以使用了。所有配置文件可以直接在线浏览:https://github.com/github/gitignore

4.栗子

比如你的项目是java项目,.java文件编译后会生成.class文件,这些文件多数情况下是不想被传到仓库中的文件。这时候你可以直接适用github的.gitignore文件模板。https://github.com/github/gitignore/blob/master/Java.gitignore 将这些忽略文件信息复制到你的.gitignore文件中去:

*.class

# Mobile Tools for Java (J2ME)
.mtj.tmp/ # Package Files #
*.jar
*.war
*.ear # virtual machine crash logs, see [http://www.java.com/en/download/help/error_hotspot.xml](http://www.java.com/en/download/help/error_hotspot.xml)
hs_err_pid*

可以看到github为我们提供了最流行的.gitignore文件配置。

保存.ignore文件后我们查看下git status,检查下是否还有我们不需要的文件会被添加到git中去:

$ git status
On branch master Initial commit Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: .gitignore
new file: HelloWorld.java Untracked files:
(use "git add <file>..." to include in what will be committed)
Config.ini

比如我的项目目录下有一个Config.ini文件,这个是个本地配置文件我不希望上传到git中去,我们可以在gitignore文件中添加这样的配置:

Config.ini

或者你想忽略所有的.ini文件你可以这样写:

*.ini

如果有些文件已经被你忽略了,当你使用git add时是无法添加的,比如我忽略了*.class,现在我想把HelloWorld.class添加到git中去:

$ git add HelloWorld.class
The following paths are ignored by one of your .gitignore files:
HelloWorld.class
Use -f if you really want to add them.

git会提示我们这个文件已经被我们忽略了,需要加上-f参数才能强制添加到git中去:

$ git status
On branch master Initial commit Changes to be committed:
(use "git rm --cached <file>..." to unstage) new file: .gitignore
new file: HelloWorld.class
new file: HelloWorld.java

这样就能强制添加到缓存中去了。如果我们意外的将想要忽略的文件添加到缓存中去了,我们可以使用rm命令将其从中移除:

$ git rm HelloWorld.class --cached
rm 'HelloWorld.class'

如果你已经把不想上传的文件上传到了git仓库,那么你必须先从远程仓库删了它,我们可以从远程仓库直接删除然后pull代码到本地仓库这些文件就会本删除,或者从本地删除这些文件并且在.gitignore文件中添加这些你想忽略的文件,然后再push到远程仓库。

5.查看gitignore规则

如果你发下.gitignore写得有问题,需要找出来到底哪个规则写错了,可以用git check-ignore命令检查:

$ git check-ignore -v HelloWorld.class
.gitignore:1:*.class HelloWorld.class

可以看到HelloWorld.class匹配到了我们的第一条*.class的忽略规则所以文件被忽略了。

6.忽略规则文件语法

a.忽略指定文件/目录

# 忽略指定文件
HelloWrold.class # 忽略指定文件夹
bin/
bin/gen/

b.通配符忽略规则

通配符规则如下:

# 忽略.class的所有文件
*.class # 忽略名称中末尾为ignore的文件夹
*ignore/ # 忽略名称中间包含ignore的文件夹
*ignore*/

原贴:wolai

Git忽略文件.gitignore的使用的更多相关文章

  1. git 忽略文件 .gitignore 以及规则

    git提供了文件忽略系统,当对工作区某个目录或文件设置了忽略后,在执行status查看状态时,被忽略的文件即使存在也不会显示出来. 这样我就可以把那些不需要上传,不需要保留的文件或目录忽略掉(比如一些 ...

  2. git 忽略文件.gitignore

    # 此为注释– 将被Git 忽略 *.a # 忽略所有.a 结尾的文件 !lib.a # 但lib.a 除外 /TODO # 仅仅忽略项目根目录下的TODO 文件,不包括subdir/TODO bui ...

  3. git 忽略文件[.gitignore]常用配置

    .idea .buildpath .project .settings .Ds_Store composer.json composer.lock a.php /public/uploads /run ...

  4. Git 忽略规则 .gitignore文件 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  5. Git忽略文件方法【转】

    转自:http://www.cnblogs.com/shangdawei/archive/2012/09/08/2676669.html http://cwind.iteye.com/blog/166 ...

  6. git忽略文件【转】

    转自: http://cwind.iteye.com/blog/1666646 有很多文件不必使用git管理.例如Eclipse或其他IDE生成的项目文件,编译生成的各种目标或临时文件等.使用git ...

  7. Git 忽略提交 .gitignore

    在使用Git的过程中,我们喜欢有的文件比如日志,临时文件,编译的中间文件等不要提交到代码仓库,这时就要设置相应的忽略规则,来忽略这些文件的提交. Git 忽略文件提交的方法 有三种方法可以实现忽略Gi ...

  8. eclipse设置git忽略文件

    使用eclipse开发的程序员们经常会接触版本控制软件,这里只要说下eclipse使用egit的情况下设置忽略文件. 特此说明在这里使用window->team->ignored对于git ...

  9. git忽略文件不起作用时

    开始我是直接进到仓库建立了.gitignore文件,再从仓库进入到项目add时总是会添加不需要添加的文件, 后来明白应该是在哪里提交在哪里创建.gitignore文件 git忽略文件操作步骤如下: 1 ...

随机推荐

  1. Docker下安装Nacos

    1:使用docker获取nacos服务镜像 docker pull nacos/nacos-server(不加版本号表示获取最新版本) 2:查看是否成功下载nacos镜像 docker images ...

  2. python日志按天分割,保存近一个月日志,日志自动清理

    python日志按天分割,保存近一个月日志 import os import logging import re from logging.handlers import TimedRotatingF ...

  3. MYSQL修改配置文件之后无法重启服务

    错误:修改配置文件my.ini之后无法重启服务. 原因:以记事本方式打开my.ini文件修改完之后保存.保存之后文本编码格式为操作系统默认格式utf-8.my.ini格式要是ANSI才可以正常启动服务 ...

  4. Selenium_截图(16)

    selenium截图有两种方式 截取全屏 get_screenshot_as_file(filename):将截图转化成文件保存到本地,filename为保存的文件路径 get_screenshot_ ...

  5. Flask_上下文(六)

    Flask中有两种上下文,应用上下文(application context)和请求上下文(request context) 当客户端发来请求时,请求上下文就登场了.请求上下文里包含了请求的各种信息, ...

  6. div背景css样式笔记

    <style type="text/css"> .div1 { width: 1024px; height: 100%; margin: 0 auto; /*backg ...

  7. Java中Jar包调用命令行运行编译

    原文链接:https://www.toutiao.com/i6491877373942694413/ 记事本编写两个简单的类 文件结构目录 启动DOS,进入文件所在目录 进入到class所在文件的目录 ...

  8. css上下居中

    position: absolute; top: 20%; left: 50%; transform: translateX(-50%); -ms-transform: translateX(-50% ...

  9. JAVA8-STREAM 使用说明

    概述 本人在java开发过程中,有些知识点需要记录整理,我尽量严谨的叙述我学习的经过和心得,以便备份和和大家一起进步学习,此篇文章是在网上多出搜集整理验证,结尾会注明出处,今天学习一个java8新的功 ...

  10. 【新手笔记】golang中使用protocol buffers 3

    主要参考了这篇帖子:https://segmentfault.com/a/1190000009277748 1.下载windows版本的PB https://github.com/protocolbu ...