今天闲下来,终于有时间解决下一直以来困扰我的一个Git的问题。就是如果当我们每次编译Android项目之后,用git status 命令查看后,总会有很多跟编译相关的文件显示为红色(如果你之前没有添加后者修改.gitignore文件的话)。这对于像我一样患有重度强迫症的患者当然是不能接受的。那么我们就来简单的看下.gitignore文件是什么,以及如何正确使用它。

.gitignore文件是什么

在我们使用 git 的时候,我们将文件添加进暂存区往往用的不是git add 单个文件,我们更多的使用的是 git add . 来添加所有的文件,这样更加方便,毕竟某有多少情况下我们需要一个个添加文件。然而,当我们不需要添加某些文件的时候,怎么办呢?也有办法,比如,在Android studio 中,我们可以在项目中新建一个.gitignore文件(如下图中黄色标识处),然后在里面添加我们需要忽略的文件类型,添加进这里面的文件,我们在使用git add .命令的时候,并不会将他们添加进版本控制中,而且在使用git status命令的时候也不会显示出关于它们的任何信息,这样工作区 就变得干净清爽的多啦。

不过,这里并不会教大家怎么写.gitignore文件,感兴趣的可以在网上搜下,其实很简单,就是忽略指定文件或者指定文件夹下的所有目录,又或者指定类型的文件,本质上其实就是正则表达式这里不详述。此处只是讲如何解决问题。

何时会遇到.gitignore文件问题

这里我假定你已经知道了如何编写.gitignore文件,我这里只说一些注意的东西,和如何解决我们遇到的问题。
诚然,如果你在新建项目的时候直接就编写好该文件,之后在版本控制中也不修改,而且也不会添加其他肯你那个你不想跟踪的文件进来,那你就不需要考虑这些问题了。然而往往我们是在开发的过程中,导入了很多库,这些库又生成了很多编译相关的文件。所以就涉及到修改.gitignore文件。如果你来来回回在本地和服务器之间pushpull了多次,或者跟别人写作的过程中突然想修改,那就会遇到一个问题,那就是:我们修改的.gitignore文件不生效。

解决方法

我们需要注意,如果那些文件我们已经加入了版本控制工具之后,我们要想重新设置.gitignore文件,需要将本地的仓库中的那些忽略的文件从 git 中取消追踪,可以使用以下命令来清空缓存git rm -r --cached . (不要忘记改命令后面的那个 "."),这时,我们会将所有文件都取消追踪,也就是说git不会再管理所有的文件,在命令行中可能还会显示很多文件被删除, 类似于下图:

不过,不用害怕,这并没有从我们的工作控件之中删除,我们可以使用 git add .将他们重新加入 git 中,而不用担心那些想忽略的文件也添加进来了。之后再用git commit -m "提交信息"进行提交就行了。不过,接下来要注意了,我们最好不要在 .gitignore中添加以下这两行:

/app/.gitignore
/.gitignore

添加这两行的话我们就不会将我们的.gitignore文件进行跟踪了,最好还是别加上这两句。

上面事情不大,可是,如果你加上了项目名/这句,比如HelloWorld/,相信你已经猜到了,如果这样的话,在你执行git rm -r --cached .后紧接着执行 git add .命令后,你会发现,你项目里的所有的东西都不会被 git 管理,当然很容易理解,因为它们已经 git 被忽略了。也许你会想,谁会那么傻,将这个添加进来。你当然不会,但是你不能保证某些情况下“被加入”,我就遇到过这种情况。因为我的 Android Studio 安装了 .gitignore 插件,而它有时候会询问你是否把某些不需要 git 追踪的文件加入进来 ,你点击“添加”的话,它会自动从网上将那些常用的文件加载进来,不过小心,有时候很可能不那么智能,比如像我们项目中有个文件夹,很不幸的就和我们的项目名重名了..然后就悲剧了...

注意:通过以上命令只是将你自己的仓库里的修改设置生效了,如果你是多人协作,他人提交代码后,你还是会出错,这就需要那些跟你协作的人也都进行类似的操作,清除本地 git 缓存下来的东西,从而将那些东西也都从各自的本地仓库里取消追踪(不知道有没有其他方式来简单的解决,暂时只想到这种方式。)

参考:
1.关于Git忽略文件:
http://reondz.github.io/%E6%8...

使用.gitignore忽略编译自动生成的那些文件相关推荐

  1. STM32 MDK编译后生成的 .map文件深入分析

    .map文件是STM32开发中非常重要的一个文件,在该文件中可以详细的查看单个文件.函数及用户定义的全局变量等的占用RAM和ROM(一般为片内FLASH)的空间大小,通过了解这些信息可以很方便的进行代 ...

  2. Wix 安装部署教程(十六) -- 自动生成多语言文件

    Wix 安装部署教程(十六) -- 自动生成多语言文件 原文:Wix 安装部署教程(十六) -- 自动生成多语言文件 因为持续集成需要,所有项目编译完之后生成一个多语言的安装包.之前生成mst文件都是 ...

  3. linux学习笔记(五)编译内核模块生成ko驱动文件

    系列文章目录 linux学习笔记(五)编译内核模块生成ko驱动文件 文章目录 系列文章目录 前言 一.加载内核简介 二.第一个hello world文件 1.文件树 2.hello.c 3.Makef ...

  4. eclipse下编写android程序突然不会自动生成R.java文件和包的解决办法

    eclipse下编写android程序突然不会自动生成R.java文件和包的解决办法 我的eclipse原来是好好的,什么问题都没有的,结果今天一打开新建一个android程序,发现工程里不会自动生成 ...

  5. eclipse android 不会自动生成R.java文件和包的解决办法

    eclipse下编写android程序突然不会自动生成R.java文件和包的解决办法 我的eclipse原来是好好的,什么问题都没有的,结果今天一打开新建一个android程序,发现工程里不会自动生成 ...

  6. 用MyEclipse自动生成hibernate映射文件和实体类

    创建web工程,使用Hibernate的时候,在工程里一个一个创建实体类太麻烦,浪费时间,现在教大家如何用MyEclipse自动生成Hibernate映射文件及实体类 方法/步骤 1 创建数据库,创建 ...

  7. 阻止 WSL 自动生成/etc/hosts 文件

    阻止 WSL 自动生成/etc/hosts 文件 修改了 /etc/host 文件,然而重启电脑就发现里面的内容还原了. 一直百思不得其解,仔细一看,发现/ etc/hosts 最上方的注释写着: T ...

  8. python建立文件数据库_python学习-- Django根据现有数据库,自动生成models模型文件...

    Django引入外部数据库还是比较方便的,步骤如下 : 创建一个项目,修改seting文件,在setting里面设置你要连接的数据库类型和连接名称,地址之类,和创建新项目的时候一致 运行下面代码可以自 ...

  9. 如何配置log4j每天产生日志,并且当天日志大于10M时自动生成另一个文件

    http://bbs.csdn.net/topics/390635339?page=1 如何配置log4j每天产生日志,并且当天日志大于10M时自动生成另一个文件 假设 11-11日 生成comlib ...

  10. ROS自定义消息类型,编译无法生成 msg/srv 文件产生的头文件

    ROS自定义消息类型,编译无法生成 msg/srv 文件产生的头文件 参考博客: ros项目第一次编译无法找到msg/srv文件产生的头文件 message headers won't build f ...

最新文章

  1. java 文件拷贝文件怎么打开_java如何拷贝文件
  2. c#启动mysql数据库服务器_C#启动停止SQL数据库服务
  3. Windows2008管理---第14章 高可用群集和QoS
  4. 如何正确使用Cocoapods
  5. [WTL] STLport安装指南
  6. win10 vs2015 编译caffe2
  7. 基于IntelVt技术的Linux内核调试器 - 2
  8. vs2013和mysql连接_安装VS2013后与数据库的连接问题
  9. ssl提高组周六模拟赛【2019.3.2】
  10. 2017/3/8 函数指针/事件/委托....
  11. CodeForces - 1485B(找规律+求和) acm寒假集训日记21/12/31or22/1/1
  12. android studio后端写在哪里_c++写的在终端上的2048游戏
  13. mysql 设计超市订单图,JSP+MySQL校园网络超市系统的设计与实现
  14. python3 常见命令_vortex_新浪博客
  15. 【数据结构(C语言)】数据结构-树
  16. 02组团队项目-Alpha冲刺-3/6
  17. amazon aws 亚马逊云服务概述
  18. 【Maya】后台拍屏:以指定摄像机的视口拍屏
  19. vscode如何同时运行多个vue项目
  20. 一个区块链项目的40种死法 |链捕手

热门文章

  1. 几种主流热修复方案分析
  2. C++中this指针小记
  3. git提交代码到github
  4. Java基础---Java---基础加强---内省的简单运用、注解的定义与反射调用、 自定义注解及其应用、泛型及泛型的高级应用、泛型集合的综合
  5. centos7.x-firewalld防火墙常用命令收集
  6. 六下计算机教学总结,六年级信息技术教师教学工作总结
  7. 日期截取年月_2019年7月18日 期权交易日志——用小黄人教你理解期权平价公式...
  8. $.getjson异常信息提示_【Java视频教程】day24-异常??????
  9. 力扣题目系列:1370. 上升下降字符串(Python题解)
  10. oracle11gr2安装测试,Ubuntu 11.10下安装Oracle 11g R2 详解(本人测试通过) (转)