如何使git忽略某些文件或文件夹
为什么要忽略某些文件或文件夹的变化?
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忽略某些文件或文件夹的更多相关文章
- 设置SVN,Git忽略MAC的.DS_Store文件的方法
设置SVN,Git忽略MAC的.DS_Store文件的方法 I. 显示Mac隐藏文件的命令: defaults write com.apple.finder AppleShowAllFiles -bo ...
- git忽略已经提交的文件【转载】
有时候我们添加.gitignore文件之前已经提交过了文件..gitignore只能忽略那些原来没有被track的文件(自添加以后,从未 add 及 commit 过的文件),如果某些文件已经被纳入了 ...
- Git忽略提交规则 .gitignore文件
在使用Git的过程中,我们喜欢有的文件比如日志,临时文件,编译的中间文件等不要提交到代码仓库,这时就要设置相应的忽略规则,来忽略这些文件的提交.简单来说一个场景:在你使用git add .的时候,遇到 ...
- git 忽略已跟踪的文件
对于未跟踪的文件,可以编辑.gitignore文件进行忽略. 对于已跟踪的文件,编辑.gitignore文件不会起作用,它只针对未被跟踪的文件,也就是你先设置规则,然后添加的新文件符合这些规则的就会被 ...
- git忽略对已入库文件的修改
项目开发过程中,会遇到本地配置文件每个开发人员不同的情况,但如果遇到类似数据库配置这种最终需要加入 git 版本控制的配置,则会陷入两难境地.要么不跟踪,要么有人提交后其他人同步下来必须手动修改,非常 ...
- git 忽略不提交的文件3种情形
1..gitignore文件 :从未提交过的文件,从来没有被 Git 记录过的文件 也就是添加之后从来没有提交(commit)过的文件,可以使用.gitignore忽略该文件.只能作用于未跟踪的文件( ...
- git忽略规则以及.gitignore文件不生效解决办法
正文 Git忽略规则: #此为注释 – 内容被 Git 忽略 .sample # 忽略所有 .sample 结尾的文件 !lib.sample # 但 lib.sample 除外 /TODO # 仅仅 ...
- Git 忽略已经提交的文件
如果想在本地忽略某个文件的话执行这个命令: git update-index --assume-unchanged <file> 如果想重新同步这个文件的话执行这个命令. git upda ...
- git忽略已提交的文件或目录
项目中的某个文件或目录已经被commit,并push到远程服务器server了. 这时发现要忽略该文件或目录,在.gitignore文件里面添加规则已经不起作用了.因为.gitignore只对从来没有 ...
随机推荐
- Android学习系列--App列表之拖拽ListView(上)
研究了很久的拖拽ListView的实现,受益良多,特此与尔共飨. 鉴于这部分内容网上的资料少而简陋,而具体的实现过程或许对大家才有帮助,为了详尽而不失真,我们一步一步分析,分成两篇文章. 一 ...
- C 标准库 - string.h之strncpy使用
strncpy 把 src 所指向的字符串复制到 dest,最多复制 n 个字符.当 src 的长度小于 n 时,dest 的剩余部分将用空字节填充. char *strncpy(char *dest ...
- ddddddeeeessssssttttrrrrrrooooooyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
我遥远的 POI 计划啊 https://loj.ac/problems/search?keyword=POI2011 atcoder 一套 动态 DP SAM 随便看 XSY 的题 UOJ Roun ...
- .Net Core GB2312编码问题
1.今天抓取了一个网页的源代码.发现中文是乱码的,马上第一反应是编码问题..... 2.仔细一看基于WebClient写的代码,还真的是没有设置编码... /// <summary> // ...
- linux创建日期文件名
linux创建文件名添加当前系统日期时间的方法 使用`date +%y%m%d` Example: mkdir `date +%y%m%d` tar cfvz /tmp/bak.`date +%y%m ...
- 13. Roman to Integer 罗马数字转化为阿拉伯数字(indexOf ()和 toCharArray())easy
Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M. Symbol Value I 1 ...
- poj Corn Fields 状态压缩dp。
Corn Fields Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 5763 Accepted: 3052 Descr ...
- 第八章.Java集合
Java集合类是一种特别有用的工具类,可用于存储数量不等的对象.Java集合大致可分为Set.List.Queue和Map四种体系 Set代表无序.不可重复的集合 List代表有序.重复的集合 Map ...
- 【转】OkHttp使用进阶 译自OkHttp Github官方教程
作者:GavinCT 出处:http://www.cnblogs.com/ct2011/ 英文版原版地址 Recipes · square/okhttp Wiki 同步get 下载一个文件,打印他的响 ...
- html发展史简介(摘抄)
1993年,IETF,Internet工程任务组(Internet Engineering Task Force)的简写.IETF又叫互联网工程任务组,成立于1985年底,是全球互联网最具权威的技术标 ...