w3h5

Github利用.gitignore文件忽略不需要上传的文件

github-octocat.png Github利用.gitignore文件忽略不需要上传的文件 经验总结

在小程序开发过程中,利用gitHub进行项目管理,其中的小程序配置文件会产生冲突,可以使用.gitignore文件配置,在上传gitHub的时候忽略不需要上传的文件。

在项目的根目录下建立.gitignore文件:(以indows系统的git为例)

在根目录右键选择 Git Bash,打开命令行。

输入touch .gitignore,会自动生成一个.gitignore文件。

设置过滤规则:

1、跳过单个文件:

比如我需要跳过 project.config.json 这个文件,可以这样写:

project.config.json

2、跳过某个格式的文件:

比如 .zip.config.sln 格式的文件,代码如下:

*.zip
*.config
*.sln

3、跳过某个文件夹:

比如跳过 Debug 文件夹,代码如下:

Debug/

4、过滤某个文件夹中的某个文件或者某个格式:

Debug/test.exe
Debug/*.zip

5、指定添加某个文件、文件夹或者格式:(前面加感叹号"!")

!/mtk/one.txt
!/mtk/
!*.zip

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

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

/mtk/
!/mtk/one.txt

6、[] 过滤多个文件或者类型

# cat .gitignore 
*.[oa] 
*~

第一行告诉 Git 忽略所有以 .o 或 .a 结尾的文件。

一般这类对象文件和存档文件都是编译过程中出现的,我们用不着跟踪它们的版本。

第二行告诉 Git 忽略所有以波浪符(~)结尾的文件,许多文本编辑软件(比如 Emacs)都用这样的文件名保存副本。

此外,你可能还需要忽略 logtmp 或者 pid 目录,以及自动生成的文档等等。要养成一开始就设置好 .gitignore 文件的习惯,以免将来误提交这类无用的文件。 

以下是个人对于配置 .gitignore 的一些心得:

1、配置语法:

以斜杠“/”开头表示目录;

以星号“*”通配多个字符;

以问号“?”通配单个字符

以方括号“[]”包含单个字符的匹配列表;

以叹号“!”表示不忽略(跟踪)匹配到的文件或目录;

此外,git 对于 .ignore 配置文件是按行从上到下进行规则匹配的,意味着如果前面的规则匹配的范围更大,则后面的规则将不会生效;

2、示例:

(1)规则:fd1/* 说明:忽略目录 fd1 下的全部内容;注意,不管是根目录下的 /fd1/ 目录,还是某个子目录 /child/fd1/ 目录,都会被忽略;

(2)规则:/fd1/* 说明:忽略根目录下的 /fd1/ 目录的全部内容;

(3)规则:

/*
!.gitignore
!/fw/bin/
!/fw/sf/

说明:忽略全部内容,但是不忽略 .gitignore 文件、根目录下的 /fw/bin//fw/sf/ 目录;

3、文件 .gitignore 的格式规范如下: 

所有空行或者以注释符号 # 开头的行都会被 Git 忽略。

可以使用标准的 glob 模式匹配。

匹配模式最后跟反斜杠(/)说明要忽略的是目录。

要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。

所谓的 glob 模式是指 shell 所使用的、简化了的正则表达式。星号(*)匹配零个或多个任意字符;

[abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);

问号(?)只匹配一个任意字符;

如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)。

再看一个 .gitignore 文件的例子: 

# 忽略所有 .a 结尾的文件
*.a
# 但 lib.a 除外
!lib.a
# 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
/TODO
# 忽略 build/ 目录下的所有文件
build/
# 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
doc/*.txt

其他信息可以直接 man gitignore 查看。 



赞 (0)
分享到: +More |

评论 沙发

换个身份