如何使git忽略某些文件或文件夹

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

git作为一款项目文件变更版本管理软件,其主要功能之一就是追踪项目文件夹内各种文件及文件夹的变更情况。但是,在日常使用中,并非项目文件夹下的所有文件及文件夹变更都需要纳入版本控制。例如我们使用自己的开发环境对项目进行开发时产生的项目配置文件、工作区配置文件。因为每个项目参与者的开发环境不尽相同,产生的项目配置文件及工作区配置也会有很大不同。如果将这些文件一并上传到服务器端,不仅无益于git对源代码的版本管理,反而会给其他项目参与者带来困扰。除此之外,还有我们在本地开发环境下对源代码编译产生的编译结果,更不需要提交到服务器端。首先,每个项目参与者都可以通过编译源代码获得编译结果;其次,一个项目的编译结果可能超过几百MB甚至上GB。把这些内容提交到服务器端,会浪费大量的公共存储空间和大量的上传下载时间。所以,我们需要告诉git不用去管理这些文件的变更信息,需要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>即你要移除的文件全名。

时间: 2024-11-10 01:05:58

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

Git忽略已跟踪的文件

在使用Git的时候,有时候我们需要对某个文件不进行版本控制,也就是忽略对某个文件的跟踪,如缓存文件.配置文件等. 但是在Git的版本控制系统中,如果已经对某个文件进行了版本控制,那么再忽略掉此文件的时候,会删除掉远程服务器的文件,这显然与我们的意愿不符,Google了好久,找到了下面这个办法. (1)我们在Clone完某个项目后,运行如下命令,本地Git库即可忽略对某个指定文件的版本记录: git update-index --assume-unchanged filename(要忽略的文件的名

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

1..gitignore文件 :从未提交过的文件,从来没有被 Git 记录过的文件 也就是添加之后从来没有提交(commit)过的文件,可以使用.gitignore忽略该文件.只能作用于未跟踪的文件(Untracked Files). 例如:.gitignore .DS_Storenode_modules/dist/npm-debug.logbuild-debugger.js.idea 2.命令git rm --cached Xml/config.xml 已经推送(push)过的文件,想从git

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

项目开发过程中,会遇到本地配置文件每个开发人员不同的情况,但如果遇到类似数据库配置这种最终需要加入 git 版本控制的配置,则会陷入两难境地.要么不跟踪,要么有人提交后其他人同步下来必须手动修改,非常麻烦.其实,对于已被纳入版本管理的文件,git 也提供了很好的解决办法. 告诉git忽略对已经纳入版本管理的文件 .classpath 的修改,git 会一直忽略此文件直到重新告诉 git 可以再次跟踪此文件 $ git update-index --assume-unchanged .classp

[macOS] git忽略所有的.DS_Store文件

最彻底的方法如下: vi ~/.gitignore_global 输入以下内容 # OS generated files # ###################### .DS_Store .DS_Store? .Spotlight-V100 .Trashes ehthumbs.db Thumbs.db 再执行一下命令 git config --global core.excludesfile ~/.gitignore_global Have fun with macOS

git忽略本地文件

一.忽略文件的常用方法 1.git通常在.gitignore文件进行配置,来忽略本地文件.但是这仅对于重来没有提交过的文件有效. 2.使用git update-index --skip-worktree path设置标识,使git忽略对应的文件. 3.使用git update-index --assume-unchanged path设置标识,使git忽略对应的文件. 二.skip-worktree和assume-nochanged的差别 使用 git update-index --skip-w

[转载]git 忽略某些文件

项目中经常会生成一些Git系统不需要追踪(track)的文件.典型的是在编译生成过程中 产生的文件或是编程器生成的临时备份文件.当然,你不追踪(track)这些文件,可以 平时不用"git add"去把它们加到索引中. 但是这样会很快变成一件烦人的事,你发现 项目中到处有未追踪(untracked)的文件; 这样也使"git add ." 和"git commit -a" 变得实际上没有用处,同时"git status"命令的

Git 忽略某些文件

忽略某些文件 项目中经常会生成一些Git系统不需要追踪(track)的文件.典型的是在编译生成过程中 产生的文件或是编程器生成的临时备份文件.当然,你不追踪(track)这些文件,可以 平时不用"git add"去把它们加到索引中. 但是这样会很快变成一件烦人的事,你发现 项目中到处有未追踪(untracked)的文件; 这样也使"git add ." 和"git commit -a" 变得实际上没有用处,同时"git status&q

eclipse设置git忽略文件

使用eclipse开发的程序员们经常会接触版本控制软件,这里只要说下eclipse使用egit的情况下设置忽略文件. 特此说明在这里使用window->team->ignored对于git来说是不起效果的,它对svn有效果,好了不说废话了. 直接选择:windows->show view->Navigator 直接在最左侧选择要忽略的文件->右键->team->ignore 保存即可 常用git忽略文件: /bin//.project/.gitignore/.cl

git忽略某些文件提交

git忽略某些文件提交 在项目中有些配置文件不需要提交,但是有同学在后面开发中发现在.igonore文件中无论如何都无法忽略某些文件的提交.原因在这里: 已经维护起来的文件,即使加上了gitignore,也无济于事.---- 那么如何解决呢?方式如下 git update-index --assume-unchanged   要忽略的文件夹/文件夹下文件名 比如我要忽略项目下.idea文件夹下所有xml文件,idea下都是xml文件(我用的webstorm): git update-index