一.什么是 .gitignore 文件
在任何当前工作的 Git 仓库中,每个文件都是这样的:
- 追踪的(tracked)- 这些是 Git 所知道的所有文件或目录。这些是新添加(用
git add
添加)和提交(用git commit
提交)到主仓库的文件和目录。 - 未被追踪的(untracked) - 这些是在工作目录中创建的,但还没有被暂存(或用
git add
命令添加)的任何新文件或目录。 - 被忽略的(ignored) - 这些是 Git 知道的要全部排除、忽略或在 Git 仓库中不需要注意的所有文件或目录。本质上,这是一种告诉 Git 哪些未被追踪的文件应该保持不被追踪并且永远不会被提交的方法。
所有被忽略的文件都会被保存在一个 .gitignore
文件中。
.gitignore
文件是一个纯文本文件,包含了项目中所有指定的文件和文件夹的列表,这些文件和文件夹是 Git 应该忽略和不追踪的。
在 .gitignore
中,你可以通过提及特定文件或文件夹的名称或模式来告诉 Git 只忽略一个文件或一个文件夹。你也可以用同样的方法告诉 Git 忽略多个文件或文件夹。
二.如何创建一个 .gitignore 文件
通常,一个 .gitignore
文件会被放在仓库的根目录下。根目录也被称为父目录和当前工作目录。根目录包含了组成项目的所有文件和其他文件夹。
也就是说,你可以把它放在版本库的任何文件夹中。你甚至可以有多个 .gitignore
文件。
要在基于 Unix 的系统(如 macOS 或 Linux)上用命令行创建一个 .gitignore
文件,打开终端程序(如 macOS 上的 Terminal.app)。然后,用 cd
命令导航到包含项目的根文件夹,并输入以下命令,为你的目录创建一个 .gitignore
文件:
touch .gitignore
名字前面有点(.
)的文件默认是隐藏的。
当单独使用 ls
命令时,隐藏的文件是不可见的。要从命令行查看所有的文件–包括隐藏的文件–请在 ls
命令中使用 -a
标志,如图所示:
ls -a
三.gitignore例子
idea
target/
*.iml
!main.iml
/test
*.class
demo/*.txt
demo/**/*.txt
.idea: 排除所有的idea文件或目录(这里的所有包括当前目录和其他目录,也就是说会递归查找目录,
下面的所有都是同理)
target/: 排除掉所有的target目录
*.iml: 排除所有的.iml文件
!main.iml:不要排除main.iml文件,配合上面的*.iml一起使用就是 排除所有.iml文件,但是不排除main.iml文件
/test:只排除当前目录下的test目录,不排除其他目录下的test目录,比如src/test就不会被排除
*.class:排除所有类文件
demo/*.txt:排除所有demo目录下的txt文件,只在demo目录下查找,比如demo/update.txt
demo/**/*.txt:排除所有demo目录下的txt文件,在demo目录及其子目录下查找,比如demo/a/update.txt, demo/update.txt
*.jar:排除所有打包文件