gitignore 忽略文件夹

1. 简介
在使用Git进行版本控制时,我们经常需要忽略一些文件或文件夹,以免将它们添加到版本库中。为了实现这样的功能,Git提供了一个名为.gitignore的配置文件,通过在这个文件中列出需要忽略的文件和文件夹的路径,Git就会在进行提交操作时自动忽略它们。本文将详细介绍.gitignore的使用方法,特别是针对文件夹的忽略规则。
2. .gitignore 文件
.gitignore文件是一个文本文件,它可以被直接放置在Git仓库的根目录中,以指示Git要忽略哪些文件。该文件中的每一行对应一个忽略规则,有以下几种规则的写法:
- 空行或以
#开头的行会被Git忽略,可以用来添加注释; - 以斜杠
/开头的行指定要忽略的文件或文件夹的路径,相对于.gitignore所在的目录; - 以叹号
!开头的行会覆盖前面的忽略规则,使得文件或文件夹不被忽略。
.gitignore文件可以被添加到版本库中,这样其他开发者在克隆仓库后也会使用相同的忽略规则。
3. 忽略文件夹的规则
在.gitignore文件中,有几种方法可以指定忽略文件夹的规则。请注意,.gitignore文件中的路径不是绝对路径,而是相对于.gitignore文件所在的目录。
3.1 直接指定文件夹路径
如果要忽略特定文件夹的所有内容,可以直接在.gitignore文件中指定该文件夹的路径。路径可以是相对路径或绝对路径。例如:
build/ # 忽略名为 build 的文件夹及其中的所有内容
/docs/ # 忽略根目录下的名为 docs 的文件夹及其中的所有内容
/Users/username/Documents/temp/ # 忽略绝对路径下的 temp 文件夹及其中的所有内容
3.2 使用通配符
在.gitignore文件中可以使用通配符来匹配文件夹的路径。常用的通配符有:
- 星号
*:表示匹配任意数量的字符(除了路径分隔符/); - 问号
?:表示匹配单个字符(除了路径分隔符/); - 双星号
**:表示匹配任意数量的子文件夹。
以下是一些使用通配符的示例:
temp*/ # 忽略所有以 temp 开头的文件夹(如 temp、temp-dev、temp123 等)
logs/? # 忽略 logs 目录下的单个字符的文件夹(如 logs/a、logs/b 等)
folder/**/temp/ # 忽略任意深度的文件夹中名为 temp 的文件夹
3.3 特殊符号的转义
在.gitignore文件中,某些特殊符号需要进行转义才能正确匹配。常见的特殊符号有:!、#、*、[、]、?、^、~、:、/ 和 \。如果要匹配这些特殊符号本身,需要在前面加上反斜杠\。例如:
!important/ # 忽略以 !important 结尾的文件夹
\[test\]/ # 忽略名为 [test] 的文件夹
4. 示例与运行结果
为了更好地理解.gitignore忽略文件夹的方法,我们看下面的示例。
假设我们有一个名为 “myproject” 的项目,其结构如下:
myproject/
├── .gitignore
├── src/
│ ├── main/
│ │ └── java/
│ │ └── com/
│ │ ├── example/
│ │ │ └── Main.java
│ │ └── README.md
│ └── test/
│ └── java/
│ └── com/
│ └── example/
│ └── Test.java
└── target/
└── myproject.jar
我们希望在提交代码时忽略 “target” 文件夹和 “README.md” 文件,因为它们是自动生成的或是开发者之间共享的说明文档。
在.gitignore文件中,添加以下内容:
target/
src/main/java/com/example/README.md
随后执行git status命令,可以看到被忽略的文件夹和文件不再显示在未暂存的文件列表中。
On branch master
Your branch is up to date with 'origin/master'.
nothing to commit, working tree clean
这证明.gitignore文件中的规则已生效。
5. 总结
.gitignore文件是Git中一个非常有用的工具,可以帮助我们忽略特定的文件和文件夹,避免将它们包含在版本控制中。本文介绍了.gitignore的基本用法,特别是针对文件夹的忽略规则。通过合理配置.gitignore,我们可以更好地管理我们的Git仓库,避免不必要的文件和文件夹污染代码库。
极客教程