git .gitignore规则及取消追踪已追踪文件
2017-11-23 21:36
274 查看
今天,在Android studio上进行git开发,把本地的文件通过git push到远程仓库,发现很多不必要的文件也被跟踪了,导致项目非常大。上网找了一下.gitignore的规则,发现讲的都模棱两可。想想还是得靠自己,去Git官方网站看了官方文档,这里做个记录,对官方文档做一下简单的翻译。备后续查看。
官方文档链接:gitignore
在gitignore文件中的每一行均指定了一个模式,当决定一个文件路径是否需要忽略时,git会以以下顺序查看下列文件(优先级从高至低,在同一个优先级内,最后一个匹配的模式决定是否忽略文件)。
1. 在命令行上指定的模式。
2. 从相同目录中的.gitignore文件中读取的模式。或者上层目录中的模式(向上至目录树的顶点),但是在越低的目录级别中优先级越高(直到文件所在目录)。这些.gitignore文件对与其在相同目录中的文件有效。一个项目通常在一个仓库包含一个.gitignore文件,文件指定的模式包括项目的生成文件。
3. 从
4. 来自配置变量
将哪些文件放置到哪种模式中取决于取决于这个模式将被怎样使用:
1. 不应该被版本管理,也不应该被通过
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. 只对一个特定的仓库有效但是没有必要与其他仓库共享(比如,只对一个用户的流程有效的辅助文件)应该写入
3. 一个用户希望Git在任何情况下都忽略的文件(比如备份或临时文件),应该添加到
以
结尾空白会被忽略,除非使用
在第一个
以
以
结尾的
其他情况下的
github上有.gitignore的模板项目,链接如下:https://github.com/github/gitignore
官方文档链接: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将会生效。
模式格式
空格不匹配文件,所以可以使用空格分隔符来增加可读性以
#开始的行为注释,在前面添加一个
\可以用来匹配一个以
#开头的文件。
结尾空白会被忽略,除非使用
\将空格分开
!将取消一个匹配,所有在之前忽略的模式中被忽略的文件文件将被重新包括到版本控制中。如果一个文件的父目录被忽略了,不可能将该文件再添加到版本控制中。因为性能的原因,git不会列出所有的被忽略的目录,针对这些目录中的文件的模式,无论在哪个文件中被指定都无效。
在第一个
!之前添加
\将会匹配以
!开头的文件,比如
\!important!.txt
foo/将会匹配foo目录下的所有文件以及其子目录下的所有目录。通配符不会匹配
pathnam/下的目录的的文件。比如
Documentation/*.html匹配
Documentation/git.html但是不匹配
Documentation/ppc/ppc.html和
tools/perf/Documentation/perf.html.(
*不能跨目录匹配)
以
/开头匹配当前目录,比如,匹配
/*.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/band so on.
其他情况下的
**无效
NOTE:取消追踪一个已被追踪的文件
使用git rm --cached
github上有.gitignore的模板项目,链接如下:https://github.com/github/gitignore
相关文章推荐
- git 忽略文件 .gitignore 以及规则
- Git中.gitignore文件不起作用的解决以及Git中的忽略规则介绍
- .gitignore 规则写法 - 在已忽略文件夹中不忽略指定文件、文件夹【注意项】
- Git中.gitignore文件不起作用的解决以及Git中的忽略规则介绍
- Git把以追踪的文件(被add或者commit过的文件)添加到.gitignore并使其有效
- Git中.gitignore文件不起作用的解决以及Git中的忽略规则介绍
- git 创建 .gitignore 文件 建立项目过滤规则
- [GIT] 取消对某个文件的追踪
- Git中.gitignore文件不起作用的解决以及Git中的忽略规则介绍
- Git中.gitignore文件不起作用的解决以及Git中的忽略规则介绍
- git 创建 .gitignore 文件过滤规则及注意事项
- Git中.gitignore文件不起作用的解决以及Git中的忽略规则介绍
- Android忽略文件以及.gitignore规则不生效的可行解决方案
- Git忽略规则及.gitignore规则不生效的解决办法 | 修改.gitignore文件Github上不生效的解决办法
- Git中.gitignore文件不起作用的解决以及Git中的忽略规则介绍
- Git中.gitignore文件不起作用的解决以及Git中的忽略规则介绍
- git的.gitignore文件的修改规则
- git的 .gitignore 如何配置(git如何忽略、追踪文件)
- Git中.gitignore文件不起作用的解决以及Git中的忽略规则介绍
- Git版本库使用.gitignore建立项目文件过滤规则