Git 忽略文件的原则
- 忽略操作系统自动生成的文件,比如缩略图等
- 忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如 Java 编译产生的 .class 文件
- 忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件
.gitignore忽略规则简单说明
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# 表示此为注释,将被Git忽略 *.a 表示忽略所有 .a 结尾的文件 !lib.a 表示但lib.a除外 /TODO 表示仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO build/ 表示忽略 build/目录下的所有文件,过滤整个build文件夹; doc/*.txt 表示会忽略doc/notes.txt但不包括 doc/server/arch.txt bin/: 表示忽略当前路径下的bin文件夹,该文件夹下的所有内容都会被忽略,不忽略 bin 文件 /bin: 表示忽略根目录下的bin文件 /*.c: 表示忽略cat.c,不忽略 build/cat.c debug/*.obj: 表示忽略debug/io.obj,不忽略 debug/common/io.obj和tools/debug/io.obj **/foo: 表示忽略/foo,a/foo,a/b/foo等 a/**/b: 表示忽略a/b, a/x/b,a/x/y/b等 !/bin/run.sh 表示不忽略bin目录下的run.sh文件 *.log: 表示忽略所有 .log 文件 config.php: 表示忽略当前路径的 config.php 文件 /mtk/ 表示过滤整个文件夹 *.zip 表示过滤所有.zip文件 /mtk/do.c 表示过滤某个具体文件 被过滤掉的文件就不会出现在git仓库中(gitlab或github)了,当然本地库中还有,只是push的时候不会上传。 需要注意的是,gitignore还可以指定要将哪些文件添加到版本管理中,如下: !*.zip !/mtk/one.txt 唯一的区别就是规则开头多了一个感叹号,Git会将满足这类规则的文件添加到版本管理中。为什么要有两种规则呢? 想象一个场景:假如我们只需要管理/mtk/目录中的one.txt文件,这个目录中的其他文件都不需要管理,那么.gitignore规则应写为:: /mtk/* !/mtk/one.txt 假设我们只有过滤规则,而没有添加规则,那么我们就需要把/mtk/目录下除了one.txt以外的所有文件都写出来! 注意上面的/mtk/*不能写为/mtk/,否则父目录被前面的规则排除掉了,one.txt文件虽然加了!过滤规则,也不会生效! ---------------------------------------------------------------------------------- 还有一些规则如下: fd1/* 说明:忽略目录 fd1 下的全部内容;注意,不管是根目录下的 /fd1/ 目录,还是某个子目录 /child/fd1/ 目录,都会被忽略; /fd1/* 说明:忽略根目录下的 /fd1/ 目录的全部内容; /* !.gitignore !/fw/ /fw/* !/fw/bin/ !/fw/sf/ 说明:忽略全部内容,但是不忽略 .gitignore 文件、根目录下的 /fw/bin/ 和 /fw/sf/ 目录;注意要先对bin/的父目录使用!规则,使其不被排除。 |
项目前期使用 .gitignore file 和项目进行到后期添加或者修改 .gitignore file 的区别
- .gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。
- .gitignore只能忽略原来没有被跟踪的文件,因此跟踪过的文件是无法被忽略的。
解决方案
|
|
单独添加已忽略过的文件
如果有些文件已经被你忽略了,当你使用 git add 时是无法添加的,比如我忽略了 *.class,现在我想把 HelloWorld.class添加到git中去: 需要强制加上 -f
|
|
配置 Git 全局的 .gitignore 文件
对于不同的操作系统会生成不一样的临时文件,比如 mac 操作系统就会生成 .DS_Store 一样的文件,类似这样的文件完全不需要上传到云端上去。然而每次配置一个项目的 Git 仓库,也不想每次都添加这个忽略规则,所以可以定义一个全局的 .gitignore 配置。
配置全局 .gitignore 文件
window 平台路径: C:\Users\用户名
mac 平台路径: /Users/用户名/
https://github.com/github/gitignore (推荐到 Github 下载文件,然后配置)
执行全局 gitignore 配置将创建的 .gitignore 文件配置为默认的全局过滤文件
1
|
git config --global core.excludesfile 文件路径 |
查看全局配置是否生效 .gitconfig
1 2 3 |
[core] autocrlf = input excludesfile = /Users/apple/.gitignore_global (和配置的路径一致) |