在仓库目录下新建一个名为. gitignore 的文件(因为是点开头, 没有文件名, 没办法直接在 Windows 目录下直接创建, 必须通过右键 Git Bash, 按照 Linux 的方式来新建. gitignore 文件). 如下图所示.
.gitignore 文件对其所在的目录及所在目录的全部子目录均有效. 通过将. gitignore 文件添加到仓库, 其他开发者更新该文件到本地仓库, 以共享同一套忽略规则.
以下涉及的 ignore 文件均为如下格式:
- # 以'#'开始的行, 被视为注释.
- # 忽略掉所有文件名是 foo.txt 的文件.
- foo.txt
- # 忽略所有生成的 html 文件,
- *.HTML
- # foo.HTML 是手工维护的, 所以例外.
- !foo.HTML
- # 忽略所有. o 和 .a 文件.
- *.[oa]
配置语法:
以斜杠 "/" 开头表示目录;
以星号 "*" 通配多个字符;
以问号 "?" 通配单个字符
以方括号 "[]" 包含单个字符的匹配列表;
以叹号 "!" 表示不忽略 (跟踪) 匹配到的文件或目录;
常用的规则:
1)/mtk/ 过滤整个文件夹
2)*.zip 过滤所有. zip 文件
3)/mtk/do.c 过滤某个具体文件
被过滤掉的文件就不会出现在 Git 仓库中 (GitLab 或 GitHub) 了, 当然本地库中还有, 只是 push 的时候不会上传.
需要注意的是, gitignore 还可以指定要将哪些文件添加到版本管理中:
- )!*.zip
- )!/mtk/one.txt
唯一的区别就是规则开头多了一个感叹号, Git 会将满足这类规则的文件添加到版本管理中.
为什么要有两种规则呢? 想象一个场景: 假如我们只需要管理 / mtk / 目录中的 one.txt 文件, 这个目录中的其他文件都不需要管理, 那么我们就需要使用:
- )/mtk/
- )!/mtk/one.txt
假设我们只有过滤规则, 而没有添加规则, 那么我们就需要把 / mtk / 目录下除了 one.txt 以外的所有文件都写出来!
最后需要强调的一点是, 如果你不慎在创建. gitignore 文件之前就 push 了项目, 那么即使你在. gitignore 文件中写入新的过滤规则, 这些规则也不会起作用, Git 仍然会对所有文件进行版本管理.
简单来说, 出现这种问题的原因就是 Git 已经开始管理这些文件了, 所以你无法再通过过滤规则过滤它们. 因此一定要养成在项目开始就创建. gitignore 文件的习惯, 否则一旦 push, 处理起来会非常麻烦.
来源: https://www.jb51.net/article/191666.htm