SDL中文论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3382|回复: 0
打印 上一主题 下一主题

[Discuss] .gitignore详解

[复制链接]

149

主题

331

帖子

2445

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2445
跳转到指定楼层
楼主
发表于 2016-5-17 20:28:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 ancientcc 于 2016-6-22 12:29 编辑

创建.gitignore
首先要强调一点,这个文件的完整文件名就是“.gitignore”,注意最前面有个“.”。这样没有扩展名的文件在Windows下不太好创建,这里给出win7的创建方法:
  1. 创建一个文件,文件名为:“.gitignore.”,注意前后都有一个点。保存之后系统会自动重命名为“.gitignore”。
复制代码


.gitignore书写规则
.gitignore对要管理的目录、文件名不区分大小写。它的基本作用是告诉Git哪些文件不需要添加到版本管理中,比如Python的.pyc文件和一些包含密码的配置文件等等。.gitignore内容是一些规则,Git会根据这些规则来判断是否将文件添加到版本控制中。下面我们看看常用的规则:
/mtk/过滤整个文件夹
*.zip过滤所有.zip文件
/mtk/do.c过滤某个具体文件


很简单吧,被过滤掉的文件就不会出现在你的GitHub库中了,当然本地库中还有,只是push的时候不会上传。

需要注意的是,gitignore还可以指定要将哪些文件添加到版本管理中:
!*.zip添加所有.zip文件
!/mtk/one.txt添加/mtk/one.txt文件
![ABC](http://www.libsdl.cn/download/sdl_location.png) 添加图片,ABC是描述性文字


唯一的区别就是规则开头多了一个感叹号,Git会将满足这类规则的文件添加到版本管理中。

为什么要有两种规则呢?想象一个场景:我们只需要管理/mtk/目录中的one.txt文件,这个目录中的其他文件都不需要管理。那么我们就需要使用:

  1. /mtk/
  2. !/mtk/one.txt
复制代码


假设我们只有过滤规则没有添加规则,那么我们就需要把/mtk/目录下除了one.txt以外的所有文件都写出来!

最后需要强调的一点是,如果你不慎在创建.gitignore文件之前就push了项目,那么即使你在.gitignore文件中写入新的过滤规则,这些规则也不会起作用,Git仍然会对所有文件进行版本管理。

简单来说,出现这种问题的原因就是Git已经开始管理这些文件了,所以你无法再通过过滤规则过滤它们。

所以大家一定要养成在项目开始就创建.gitignore文件的习惯,否则一旦push,处理起来会非常麻烦。

多个.gitignore
一个.gitignore只影响它所在目录以及子目录,当一项目有多个目录时,就可以让存在多个.gitignore。

有时多个.gitignore是必须的。举个例子,Visual Studio会把编译结果放在debug目录,上传github时往往就要忽略该目录。但有的源码会把debug作为目录名,像boost库中的<boost>/boost/preprocessor/debug,这个目录就不能忽略了,为此就须要多个.gitignore。

示例:Android Studio 2.0创建的.gitignore
根下的.gitignore
  1. *.iml:忽略所有扩展名是iml的文件。
  2. .gradle:忽略所有名称是.gradle的文件和目录。
  3. /local.properties:忽略和该.gitignore同级的、名称是local.properties的目录和文件。
  4. /.idea/workspace.xml:忽略和该.gitignore同级的.idea/workspace.xml文件。
  5. /.idea/libraries:忽略和该.gitignore同级的.idea/libraries目录。
  6. .DS_Store:忽略所有名称是.DS_Store的文件和目录。
  7. /build:忽略和该.gitignore同级的build目录。注:app目录也会有build,具体怎么处理看后面的“app下的.gitignore”
复制代码

app下的.gitignore
  1. /build:忽略和该.gitignore同级的build目录。
  2. /libs:忽略和该.gitignore同级的libs目录。
  3. /obj:忽略和该.gitignore同级的obj目录。
复制代码

注:libs、obj是我添加的,它们分别的NDK生成的目标文件和库文件。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|丽谷软件|libsdl.cn

GMT+8, 2025-5-2 03:35 , Processed in 0.055993 second(s), 19 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表