转自: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文件范例
Html代码 收藏代码
<span style="font-size: small;"># Compiled source #
###################
*.com
*.class
*.dll
*.exe
*.o
*.so
# Packages #
############
# it's better to unpack these files and commit the raw source
# git has its own built in compression methods
*.7z
*.dmg
*.gz
*.iso
*.jar
*.rar
*.tar
*.zip
# Logs and databases #
######################
*.log
*.sql
*.sqlite
# OS generated files #
######################
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
Icon?
ehthumbs.db
Thumbs.db
</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
分享到:
相关推荐
Git忽略文件.gitignore
VS2019的git常用过滤文件.gitignore
C#/.NET语言完美的.gitignore文件,直接覆盖C#项目工作区目录中的 .gitignore 同名文件即可。
直接覆盖C#项目工作区目录中的 .gitignore 同名文件即可。
本文将详细介绍如何在VS2022中设置Git忽略文件。 首先,我们需要了解`.gitignore`文件。这是一个文本文件,用于定义Git应该忽略的文件或文件类型。每个`.gitignore`文件可以包含一系列规则,每条规则定义了一种应被...
VisualStudio开发C#程式码时,使用Git进行版本控制。每次提交都会有一些自动生成的文件不是我们所关心的,设置忽略文件,让Git只去比对核心文件以节省时间和资源
.gitignore常用格式,本人一直使用,适合Unity+Git管理。用于忽略工程不想要管理的文件 其中Library/表示忽略Library文件夹里面所有的内容,*.sln表示忽略所有以.sln后缀的内容 内容参考: Library/ Temp/ Logs/ ...
该文章旨在帮助读者更好地理解和使用Git中的.gitignore文件,以便在版本控制中更有效地管理项目文件。 文章分为以下几个部分: 设置全局配置:详细介绍如何设置全局的.gitignore配置,使得在不同项目中可以统一...
附件是Git中使用.gitignore文件进行上传文件的选择性忽略的使用。可以通过使用该文件避免上传到远端一些中间文件,生成的.class文件,特定于开发环境的文件,以及敏感文件。
`.gitignore`文件在Git中的作用不可忽视,它定义了哪些文件或目录在Git仓库中应该被忽略,不进行版本跟踪。这个名为"A collection of useful .gitignore templates.zip"的压缩包集合了一组多样化的`.gitignore`模板...
git上传忽略文件或目录设置文件.gitignore windows有时候不让新建这样的文件夹,提供一个
而`.gitignore`文件是Git中的一个重要组成部分,它定义了哪些文件或目录应该被Git忽略,不纳入版本控制。本文将深入探讨`.gitignore`的用途、工作原理以及其在迭代过程中的作用。 首先,理解`.gitignore`的基本概念...
`.gitignore`是一个文本文件,包含一系列规则,指示Git忽略特定的文件或文件类型。这可以包括编译后的文件、日志文件、缓存文件等,这些通常不需纳入版本控制。通过使用`.gitignore`,我们可以保持Git仓库的整洁,并...
`.gitignore`文件在Git版本控制系统中扮演着重要角色,它允许用户指定哪些文件或目录在提交时应该被忽略,防止不必要的文件污染代码库。 在Git中,`.gitignore`文件是一个文本文件,包含一系列规则,用于定义哪些...
`.gitignore`文件是一个文本文件,用于定义哪些文件或文件夹应该被Git忽略。它通常放在项目的根目录下,并且其规则遵循特定的语法。 创建`.gitignore`文件在Windows系统中可能需要通过Git Bash等工具来完成,因为...
keil工程中支持的所有文件类型,并且可用于git版本控制中的文件列表。
C# .net的Git忽略文件整理
.gitignore 文件中的每一行都指定了一个匹配模式,Git 会根据这些模式来忽略文件。匹配模式可以使用 shell 的 glob 模式(如 *.log 匹配所有以 .log 结尾的文件),也可以使用正则表达式(但 Git 的 .gitignore 文件...
Gitignore是Git版本控制系统中的一个重要概念,用于定义在提交项目时应该忽略的文件或文件夹。这个`gitignore`项目是一个集合,包含了各种编程语言、框架、构建工具等的预定义`.gitignore`模板,帮助开发者更高效地...