git .gitignore规则及取消追踪已追踪文件

本文详细介绍了如何利用 .gitignore 文件排除不必要的文件被 Git 跟踪,避免项目体积过大。文章解释了 .gitignore 文件的工作原理及模式匹配规则,并区分了不同类型的忽略文件的应用场景。

今天,在Android studio上进行git开发,把本地的文件通过git push到远程仓库,发现很多不必要的文件也被跟踪了,导致项目非常大。上网找了一下.gitignore的规则,发现讲的都模棱两可。想想还是得靠自己,去Git官方网站看了官方文档,这里做个记录,对官方文档做一下简单的翻译。备后续查看。
官方文档链接:gitignore

gitignore

指定不需要跟踪的文件进行忽略。

概要

$HOME/.config/git/ignore, $GIT_DIR/info/exclude, .gitignore

描述

一个gitignore文件指定git需要忽略的文件。 对git已经跟踪的文件不起作用。具体查看后续NOTE。

在gitignore文件中的每一行均指定了一个模式,当决定一个文件路径是否需要忽略时,git会以以下顺序查看下列文件(优先级从高至低,在同一个优先级内,最后一个匹配的模式决定是否忽略文件)。
1. 在命令行上指定的模式。
2. 从相同目录中的.gitignore文件中读取的模式。或者上层目录中的模式(向上至目录树的顶点),但是在越低的目录级别中优先级越高(直到文件所在目录)。这些.gitignore文件对与其在相同目录中的文件有效。一个项目通常在一个仓库包含一个.gitignore文件,文件指定的模式包括项目的生成文件。
3. 从.git/ingo/exclude文件中读取的模式
4. 来自配置变量core.excludesFile指定的模式

将哪些文件放置到哪种模式中取决于取决于这个模式将被怎样使用:
1. 不应该被版本管理,也不应该被通过clone分发到其他仓库中的文件写入.gitignore文件中(比如所有人都想忽略的文件)
Patterns which should be version-controlled and distributed to other repositories via clone (i.e., files that all developers will want to ignore) should go into a .gitignore file.(这个貌似是官网写错了,应该是”should not be version-controlled”)
2. 只对一个特定的仓库有效但是没有必要与其他仓库共享(比如,只对一个用户的流程有效的辅助文件)应该写入.git/ingo/exclude中。
3. 一个用户希望Git在任何情况下都忽略的文件(比如备份或临时文件),应该添加到core.excludesFile中(用户的!/.giconfig),如果用户的$XDG_CONFIG_HOME没有被设置或者为空, $HOME/.config/git/ignore 将会生效。

模式格式
  1. 空格不匹配文件,所以可以使用空格分隔符来增加可读性
  2. #开始的行为注释,在前面添加一个\可以用来匹配一个以#开头的文件。
  3. 结尾空白会被忽略,除非使用\将空格分开
  4. !将取消一个匹配,所有在之前忽略的模式中被忽略的文件文件将被重新包括到版本控制中。如果一个文件的父目录被忽略了,不可能将该文件再添加到版本控制中。因为性能的原因,git不会列出所有的被忽略的目录,针对这些目录中的文件的模式,无论在哪个文件中被指定都无效。
    在第一个!之前添加\将会匹配以!开头的文件,比如\!important!.txt
  5. foo/将会匹配foo目录下的所有文件以及其子目录下的所有目录。通配符不会匹配pathnam/下的目录的的文件。比如Documentation/*.html 匹配 Documentation/git.html但是不匹配Documentation/ppc/ppc.htmltools/perf/Documentation/perf.html.(*不能跨目录匹配)
  6. /开头匹配当前目录,比如,匹配/*.c匹配cat-file.c但是不匹配mozilla-sha1/sha1.c.
    • **/开头表示匹配所有目录,比如,**/foo匹配所有目录下的foo文件和foo目录,和foo效果相同。**/foo/bar匹配所有在foo目录下的bar文件和bar目录。
    • 结尾的/**匹配所有目录内的文件。比如abc/**匹配所有abc目录下的文件。
    • a/**/b 匹配a/b, a/x/b, a/x/y/b and so on.
    • 其他情况下的**无效
NOTE:取消追踪一个已被追踪的文件

使用git rm --cached

github上有.gitignore的模板项目,链接如下:https://github.com/github/gitignore

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值