git中的ignore文件

发布于:2025-07-11 ⋅ 阅读:(30) ⋅ 点赞:(0)

写在前面

.gitignore文件在Git中扮演着关键角色,通常位于项目的根目录。它用于指定哪些文件或目录应排除在版本控制之外,以避免将不必要的文件(如编译生成的中间文件、临时文件、日志文件等)提交到远程仓库中。.gitignore是一个纯文本文件,每行定义一个忽略规则。规则可以是文件名、路径,或使用通配符模式。以下是.gitignore文件的一些常见内容和格式示例:

1. 指定文件或者目录的名字

可以直接在.gitignore文件中指定要忽略的文件或目录名称,每行写一个。例如:

logs               # 忽略所有名为 logs 的文件或目录
/logs              # 仅忽略根目录下名为 logs 的文件或目录
logs/              # 忽略项目中所有名为 logs 的目录
/logs/			   # 仅忽略根目录下名为 logs 的目录
  • 前置斜杠:如果忽略规则的名称前面带有斜杠,表示只忽略根目录下的匹配项。
    例如:/logs仅忽略根目录下名为logs的文件或目录。

  • 后置斜杠:如果忽略规则的名称后面带有斜杠,表示忽略的是指定名称的目录。
    例如:logs/忽略项目中所有名为logs的目录,但不会忽略同名文件。

  • 无斜杠:如果忽略规则的名称前后都没有斜杠,表示忽略整个项目中所有匹配的文件或目录。
    例如:logs忽略项目中所有名为logs的文件或目录,无论其位置如何。

2. 使用通配符

可以使用通配符来匹配多个文件或目录,常用的通配符有:

*:匹配零个或多个字符
*.log               # 忽略所有以 .log 结尾的文件或目录
temp*               # 忽略所有以 temp 开头的文件或目录
logs/*              # 忽略名为 logs 的目录下的所有文件与目录,相当于直接忽略 logs 目录
src/*/temp.txt      # 忽略名为 src 目录下任意一级子目录中名为 temp.txt 的文件或目录
?:匹配单个字符
temp?.txt           # 忽略名为 temp 开头,跟着一个字符,以 .txt 结尾的文件或目录
file??.log          # 忽略名为 file 开头,跟着两个字符,以 .log 结尾的文件或目录
**:递归匹配任意子目录
config/**/*.txt     # 忽略项目中所有 config 目录及其子目录中以 .txt 结尾的文件或目录
**/build/           # 忽略任意目录中的 build 目录,效果等同于 build/

3. 使用!来取反规则,使本来应该被忽略的文件或目录不再被忽略

!important.log      # 搭配 *.log   表示除 important.log 以外的 *.log 文件或目录被忽略
!logs/important/    # 搭配 logs/*  表示保留 logs 目录下的 important 子目录

如果你只想忽略名为logs的文件,而不忽略名为logs的目录,可以在.gitignore文件中这样配置:

logs                # 忽略所有名为 logs 的文件或目录
!logs/              # 不忽略名为 logs 的目录

4. 全局.gitignore

Git还支持全局范围内定义.gitignore规则,这样可以在所有Git项目中应用相同的忽略规则,而无需在每个项目中单独配置.gitignore文件。我们创建一个.gitignore_global文件,建议将其放在~目录(当前用户主目录)下,当然也可以放在其他任何位置。然后在这个文件中添加我们想要忽略的文件或目录的规则,例如:

.DS_Store
__MACOSX/
._*
.idea/

接下来需要告诉Git这个全局文件的位置,执行以下命令(这里假设文件放到了~目录下):

git config --global core.excludesfile ~/.gitignore_global

在配置后,所有Git项目中都会自动应用.gitignore_global文件中的规则,以忽略匹配的文件或文件夹。这样,无需在每个项目中单独维护.gitignore文件,简化了管理过程。


The end.


网站公告

今日签到

点亮在社区的每一天
去签到