git忽略文件【转】

转自: http://cwind.iteye.com/blog/1666646

有很多文件不必使用git管理。例如Eclipse或其他IDE生成的项目文件,编译生成的各种目标或临时文件等。使用git status时,会在Untracked files里面看到这些文件列表,在一次需要添加的文件比较多时(使用git add . / git add -u),会把这些所有的未跟踪文件添加进索引。

 

============一些牢骚============

     于是自然想要告诉git把这些文件忽略,我们当然会想到去Google,输入本文标题这个关键字(一部分人会直接去看document),然后当然会有很多解决方案,多数告诉我们在.gitignore文件中添加待忽略的文件目录列表;照做,问题很有可能依然存在。

     再Google,这次可能找到了help.github.com或stackoverflow上,看到一些原文的讨论;其中讲到在向.gitignore添加忽略文件之前一定要保证那些文件未被git跟踪,即先使用命令git rm --cached filename将它们从索引中删除。终于看到靠谱的解决方案不禁暗喜,照做--敲一下git status试试,问题很有可能仍然存在。

     太多中文“技术资料”是复制照搬过来的,转载的人自己并没有试过;稍好一点的在英文社区看到了相关讨论,随手翻译了一下发过来,可能存在理解上的问题或者忽略了一些细节,导致依然没办法解决问题。

     所以搜索引擎给出的中文的结果,有很多对解决问题丝毫无用的。Git忽略文件是很普遍也应该是很简单的一个问题,但多数帖子根本连这个问题都没搞明白,于是引发了这一系列的牢骚。

     遇到问题要多思考,想想问题的本质,解决方法的原理;最重要的是要切实地去动手做。

============牢骚结束============

 

解决方案:

1. 本地仓库忽略

本地仓库的文件忽略规则可以在.git/info/exclude文件中添加。这些忽略的文件不会提交到共享库中,因而不会被协作者所共享。

 

2. 当前工作目录添加文件忽略

对于每一级工作目录,创建一个.gitignore文件,向该文件中添加要忽略的文件或目录。但在创建并编辑这个文件之前,一定要保证要忽略的文件没有添加到git索引中。使用命令git rm --cached filename将要忽略的文件从索引中删除。

--摘抄.gitignore的格式规范

• 所有空行或者以注释符号 # 开头的行都会被 Git 忽略。
• 可以使用标准的 glob 模式匹配。
• 匹配模式最后跟反斜杠(/)说明要忽略的是目录。
• 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。
所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。星号(*)匹配零个或多个任意字符;[abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);问号(?)只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如[0-9]表示匹配所有 0 到 9 的数字)。

2.1 工作目录的每一层下级目录都可以有一个.gitignore文件,以说明当前目录下需要被git忽略的文件或目录

2.2 .gitignore文件可以被提交到共享库中被协作者共享

 

3. 全局的.gitignore

可以通过创建~/.gitignore_global并添加到git全局配置以减少每层目录的规则重复定义。使用命令git config --global core.excludesfile ~/.gitignore_global即可

.gitignore_global文件范例

Ruby代码  

  1. <span style="font-size: small;"># Compiled source #  
  2. ###################  
  3. *.com  
  4. *.class  
  5. *.dll  
  6. *.exe  
  7. *.o  
  8. *.so  
  9.   
  10. # Packages #  
  11. ############  
  12. # it's better to unpack these files and commit the raw source  
  13. # git has its own built in compression methods  
  14. *.7z  
  15. *.dmg  
  16. *.gz  
  17. *.iso  
  18. *.jar  
  19. *.rar  
  20. *.tar  
  21. *.zip  
  22.   
  23. # Logs and databases #  
  24. ######################  
  25. *.log  
  26. *.sql  
  27. *.sqlite  
  28.   
  29. # OS generated files #  
  30. ######################  
  31. .DS_Store  
  32. .DS_Store?  
  33. ._*  
  34. .Spotlight-V100  
  35. .Trashes  
  36. Icon?  
  37. ehthumbs.db  
  38. Thumbs.db  
  39. </span>  

 

 References:

1. Ignoring files, https://help.github.com/articles/ignoring-files

2. 初次使用git-忽略某些文件, http://www.phperblog.net/?p=173

3. git ignore file, Git增加忽略文件, http://www.cnblogs.com/wucg/archive/2011/08/16/2141647.html

时间: 2024-10-27 21:20:56

git忽略文件【转】的相关文章

Git忽略文件方法【转】

转自:http://www.cnblogs.com/shangdawei/archive/2012/09/08/2676669.html http://cwind.iteye.com/blog/1666646   有很多文件不必使用git管理.例如Eclipse或其他IDE生成的项目文件,编译生成的各种目标或临时文件等.使用git status时,会在Untracked files里面看到这些文件列表,在一次需要添加的文件比较多时(使用git add . / git add -u),会把这些所有

git临时忽略文件命令使用例子

git 中要在版本库中忽略某些文件,第一选择选择应该是使用 ".gitignore" 配置文件,该方式是永久忽略,如果要忽略某个已经在版本库中的文件,那么先要从版本库中移除,然后.gitignore中的配置才会生效. git 还有一种临时忽略文件的方式,命令为: git update-index --assume-unchanged 这种方式忽略可以让该文件还继续保留在版本库中,但是本地修改文件后,不会提示有修改,也就不需要提交. 既然是临时忽略,那么也可以解除临时忽略,命令为: gi

eclipse svn不能忽略文件及文件夹,ignore设置无效

问题描述 eclipse svn不能忽略文件及文件夹,ignore设置无效 eclipse下的项目,从import svn 导入的,team提交时,总是有一些文件及文件夹不用提交,无论是从svn客户端还是eclipse svn插件设置ignore都不起作用.主要是用eclipse开发时在与svn同步项目时,资源库同步页面会显示更改的文件或者文件夹,但是有的是没用的,还要去选择提交,这样比较麻烦,而且易提交错.求指点 解决方案 首先将忽略的文件删除,提交上去,之后你的仓库就没你忽略的文件了,之后忽

TortoiseSVN设置忽略文件和目录文件夹

TortoiseSVN设置忽略文件和目录文件夹  在多数项目中你总会有文件和目录不需要进行版本控制.这可能包括一些由编译器生成的文件,*.obj,*.lst,或许是一个用于存放可执行程序的输出文件夹.只要你提交修改,TortoiseSVN 就会在提交对话框的文件列表中显示出未版本控制文件.当然你可以关闭这个显示,不过你可能会忘记添加新的源文件.   最好的避免类似问题的方法是添加参考文件到该项目的忽略列表.这样他们就永远不会出现在提交对话框中,而真正的未版本控制文件则仍然列出. 方法一 在资源管

GitLab宣布支持Git大文件存储Git LFS

GitLab 宣布支持 Git LFS,Git 大型文件存储.随着越来越多的开发者使用 Git 和 GitLab,其他的一些工业也开始使用 GitLab,比如版本化视频文件,图像,甚至是微芯片设计,团队需要一个平台来进行高效可靠的大型文件版本协作. 为了更好的服务社区,满足版本大型文件的需求,GitLab 宣布支持 Git LFS,现在已经包括在 GitLab.com,GitLab 社区版本和 GitLab 企业版本.现在游戏开发者.图像设计师.移动应用开发者和任意需要大型文件的软件开发者都可以

使用AndroidStudio上传忽略文件至SVN Server的解决办法_Android

在同组项目进行共享时,容易把本地的配置文件比如*.iml等文件上传至共享服务器,这样会对队友造成巨大的麻烦,为了解决这个问题,可以使用下面方法解决,下面以上传到服务器的app.iml文件为例. 一.在AS的Setting中取消忽略文件后缀".iml": 二.在Windows目录中找到当前项目下的"app.iml"文件,右键该文件,选中TortoiseSVN,如下图2位置: 图2 在该项下选择Delete,删除该文件,如下图3所示: 图3 三.删除该文件后,在当前目录

BitBucket Cloud新增Git大文件存储Beta支持

Atlassian工程师Szilard Szasz-Toth在一篇文章中写道,以前是在BitBucket Server上,现在,Atlassian基于云的代码管理解决方案BitBucket Cloud也提供了Git大文件存储. Git LFS背后的基本理念是将大型二进制文件存储在并行存储中,而Git库只包含到那些文件的轻量级引用.这样,二进制文件的修改历史就可以表示为其实际版本的引用序列,而不是完全复制它们.这大大提升了克隆以及获取新版本库的速度,因为只有大文件的当前检出版本会被下载. 据Sza

SVN忽略文件或文件夹几种方法总结

每个项目中的配置文件都有区别,在本地开发和线上生产,之前一直很懒,不想去忽略提交一些配置文件,只是在提交的时候排除掉.但是在项目上传部署的时候又必须小心,害怕覆盖线上的配置,今天就硬头皮看一下. 如果你使用的是WIN,那么可以在SVN右键菜单里设置,可以设置全局忽略条件或者单独忽略掉一个文件以及文件夹,下面是command-line下的操作. 使用svn propset svn:ignore  代码如下 复制代码 lch@localhost:kidulty_www $ svn st M     

使用AndroidStudio上传忽略文件至SVN Server的解决办法

在同组项目进行共享时,容易把本地的配置文件比如*.iml等文件上传至共享服务器,这样会对队友造成巨大的麻烦,为了解决这个问题,可以使用下面方法解决,下面以上传到服务器的app.iml文件为例. 一.在AS的Setting中取消忽略文件后缀".iml": 二.在Windows目录中找到当前项目下的"app.iml"文件,右键该文件,选中TortoiseSVN,如下图2位置: 图2 在该项下选择Delete,删除该文件,如下图3所示: 图3 三.删除该文件后,在当前目录