返回
创建于
状态公开
gitignore
1ent/
2!ent/generate.go
3!ent/schema/*

规则解析

  1. ent/ 先忽略整个 ent 目录(包括所有文件和子目录)。

  2. !ent/generate.go 试图把 ent/generate.go 从忽略名单中“重新加回来”。 ⚠️ 但是由于 ent/ 整个目录本身已经被忽略,git 不会再去扫描目录里的文件,所以这一条实际上 不会生效

  3. !ent/schema/* 道理一样:ent/ 整个目录被忽略,git 不会再去递归匹配 schema 子目录,这条也 不会生效

正确写法

要想保留 generate.go 和整个 schema 目录,必须先让 git 不忽略 ent/ 目录本身,然后再忽略里面的其他文件。比如这样写:

gitignore
1# 忽略 ent 下所有内容
2ent/*
3
4# 但保留 generate.go
5!ent/generate.go
6
7# 保留 schema 整个目录
8!ent/schema/

总结

你的写法的问题在于:ent/ 整个目录忽略掉了,后面的 ! 规则不起作用。 正确写法是 ent/*,这样目录本身保留,才能对内部文件做精细化控制。