为什么要忽略某些文件或文件夹的变化?

git作为一款项目文件变更版本管理软件,其主要功能之一就是追踪项目文件夹内各种文件及文件夹的变更情况。但是,在日常使用中,并非项目文件夹下的所有文件及文件夹变更都需要纳入版本控制。例如,一些IDE在项目文件夹中留下的配置文件就不需要提交到远程服务器端与其他项目参与者分享,因为每个项目参与者的开发环境多多少少有些区别,我用不了你的IDE配置,你也用不了我的配置。如果团队中某一个人将自己的工作区配置上传到服务器端,不仅无益于源代码版本管理,反而会给其他项目参与者带来困扰。

除此之外,还有我们在本地开发环境下对源代码编译产生的编译结果,更不需要提交到服务器端。首先,每个项目参与者都可以通过编译源代码获得编译结果;其次,一个项目的编译结果可能超过几百MB甚至上GB。把这些内容提交到服务器端,会浪费大量的公共存储空间和上传下载时间。所以,我们需要git在版本管理时忽略这些文件的变更信息。

如何忽略这些文件和文件夹的变更信息?

1、创建.gitignore文件

在git管理的项目文件夹中(严格的讲,应该叫做git的本地repository),创建一个文件名为“.gitignore”的纯文本文件,如图1所示:

图1

上图中的.gitignore文件就是我用notepad++刚刚创建出来用于告诉git忽略哪些文件变更的配置文件。在这里多说一句,Git在扫描文件变更时,会先查看.gitignore的配置,根据.gitignore中的配置再决定哪些文件需要被标注上untracked。当然,那些被ignore的文件肯定不会被标上untracked,因为那些文件对于git而言是透明的。

2、编辑.gitignore文件

图1中,target文件夹是本地编译结果,nbactions.xml和nb-configuration.xml都是Netbeans IDE的相关配置文件,上述这些文件和文件夹我都不需要提交到远程服务器端。我们先来看看,如果.gitignore中什么都不写,git会怎样处理上述文件和文件夹。这里我使用了GitHub官网提供的GitHub Desktop软件,感兴趣的朋友可以去这里下载(https://desktop.github.com/)

这是GitHub Desktop中显示的需要提交到版本库中的文件列表,如图2所示。

图2

git将需要提交到版本库的资源文件全部列出来了,几乎全是target目录下的东西。target目录是maven项目中专门用来暂存源代码编译结果的目录,这些内容不用提交到服务器端。还有nbactions.xml和nb-configuration.xml这两个文件,也不需要提交到服务器端。

让我们编辑.gitignore文件,将target、nbactions.xml、nb-configuration.xml三个条目添加到.gitignore中,如列表1所示。

##############################
## Folders ##
##############################
target ##############################
## Netbeans conf ##
##############################
nb-configuration.xml
nbactions.xml

列表1

再来看看GitHut Desktop中有什么变化,如图3所示。

图3

上述我们不希望提交的文件变更全部消失了,git不会再追踪这些文件的变更情况,也不会将它们提交到服务器端。

Tips:

1、在.gitignore文件中还可以使用wildcard(某位同学称之为“野卡” )通配符,例如,*.log,去掉.gitignore同一文件夹中的所有后缀名为log的文件。GitHub上提供了一份常用的忽略规则,大家可以拿来参考,详见此处:https://gist.github.com/octocat/9257657。

2、如果.gitignore忽略规则创建于文件提交代码库之后,则.gitignore规则不会影响目前所提交的文件(不会自动把文件从服务器端删除掉)。你需要手动删除,用如下的方式:

git rm --cached <FILENAME>

<FILENAME>即你要移除的文件全名。

如何使git忽略某些文件或文件夹的更多相关文章

  1. 设置SVN,Git忽略MAC的.DS_Store文件的方法

    设置SVN,Git忽略MAC的.DS_Store文件的方法 I. 显示Mac隐藏文件的命令: defaults write com.apple.finder AppleShowAllFiles -bo ...

  2. git忽略已经提交的文件【转载】

    有时候我们添加.gitignore文件之前已经提交过了文件..gitignore只能忽略那些原来没有被track的文件(自添加以后,从未 add 及 commit 过的文件),如果某些文件已经被纳入了 ...

  3. Git忽略提交规则 .gitignore文件

    在使用Git的过程中,我们喜欢有的文件比如日志,临时文件,编译的中间文件等不要提交到代码仓库,这时就要设置相应的忽略规则,来忽略这些文件的提交.简单来说一个场景:在你使用git add .的时候,遇到 ...

  4. git 忽略已跟踪的文件

    对于未跟踪的文件,可以编辑.gitignore文件进行忽略. 对于已跟踪的文件,编辑.gitignore文件不会起作用,它只针对未被跟踪的文件,也就是你先设置规则,然后添加的新文件符合这些规则的就会被 ...

  5. git忽略对已入库文件的修改

    项目开发过程中,会遇到本地配置文件每个开发人员不同的情况,但如果遇到类似数据库配置这种最终需要加入 git 版本控制的配置,则会陷入两难境地.要么不跟踪,要么有人提交后其他人同步下来必须手动修改,非常 ...

  6. git 忽略不提交的文件3种情形

    1..gitignore文件 :从未提交过的文件,从来没有被 Git 记录过的文件 也就是添加之后从来没有提交(commit)过的文件,可以使用.gitignore忽略该文件.只能作用于未跟踪的文件( ...

  7. git忽略规则以及.gitignore文件不生效解决办法

    正文 Git忽略规则: #此为注释 – 内容被 Git 忽略 .sample # 忽略所有 .sample 结尾的文件 !lib.sample # 但 lib.sample 除外 /TODO # 仅仅 ...

  8. Git 忽略已经提交的文件

    如果想在本地忽略某个文件的话执行这个命令: git update-index --assume-unchanged <file> 如果想重新同步这个文件的话执行这个命令. git upda ...

  9. git忽略已提交的文件或目录

    项目中的某个文件或目录已经被commit,并push到远程服务器server了. 这时发现要忽略该文件或目录,在.gitignore文件里面添加规则已经不起作用了.因为.gitignore只对从来没有 ...

随机推荐

  1. 获取两个数之间的随机数-java

    start=25 end=30 (int)(Math.random()*(end-start)+start)

  2. ubuntu16上安装openJDK.md

    ubuntu16上安装openJDK.md 环境 操作系统:ubuntu 16.04.2 LTS 安装 当你不需要安装oracle的JDK时,使用openJDK,安装就比较方便. sudo apt-g ...

  3. java ee的map

  4. Java绘制图片并进行合成

    以下代码可以生成六行两列的图片,代码改成了可以接受参数可循环的. package com.xgt.util; import com.sun.image.codec.jpeg.JPEGCodec; im ...

  5. [PY3]——内置数据结构(4)——字符串格式化(format)

    字符串格式化是拼接字符串的一种手段 join和+拼接字符串的方法,难以控制格式 printf style 字符串格式化 这种方法是从c语言继承过来的 # 待格式化的字符串:一个字符串存在占位符 In ...

  6. Autofac +webapi 配置

    Autofac配置 using Autofac; using System; using System.Collections.Generic; using System.Linq; using Sy ...

  7. Node.js学习笔记(六) --- Nodejs 的非阻塞 I/O、 异步、 事件驱动

    1. Nodejs 的单线程 非阻塞 I/O 事件驱动在 Java. PHP 或者.net 等服务器端语言中,会为每一个客户端连接创建一个新的线程.而每个线程需要耗费大约 2MB 内存.也就是说,理论 ...

  8. 微信小程序整理

    目录 开发环境 目录结构 WXML组件 WXSS 数据绑定 条件渲染 列表渲染 模版 事件 引用 路由传参 API 实例TodoList 1.开发环境 开发工具下载(https://mp.weixin ...

  9. 关于request请求的基本获取

      1.Request对象的作用是与客户端交互,收集客户端的Form.Cookies.超链接,或者收集服务器端的环境变量. request对象是从客户端向服务器发出请求,包括用户提交的信息以及客户端的 ...

  10. 初识http2.0

    初识http2.0 HTTP2.0性能增强的核心:二进制分帧 HTTP 2.0最大的特点: 不会改动HTTP 的语义,HTTP 方法.状态码.URI 及首部字段,等等这些核心概念上一如往常,却能致力于 ...