Unity项目.gitignore无法完整忽略目录文件导致推送失败如何解决?
复现步骤
- 使用官方稳定版Unity.gitignore文件
- 重新提交.gitignore文件变更前,执行
git rm -r --cached .命令清除Git缓存 - 执行
git add .命令暂存所有文件 - 执行
git status --ignored命令查看状态时结果异常(见下方截图A):被排除目录下部分文件未被忽略,仅部分文件可正常忽略
关键信息
- 无需纳入版本控制的大文件(如Unity“Bee”构建引擎相关文件)未被忽略,导致GitHub平台
git push操作失败 - 新建从未提交过大文件的空仓库,首次上传使用上述.gitignore配置时仍出现相同问题
- .gitignore文件存放于项目根目录,与Unity项目同名目录、.git初始化目录处于同级路径
- 曾尝试单独配置指定文件的忽略规则,仍未生效
- 当前环境版本:Git 2.31.0.windows.1,Unity 2022.1.4f1
截图A:
解决方案
这个问题由三个原因共同导致:一是旧版官方Unity.gitignore未覆盖Unity 2022版本新增的Bee构建后端生成的文件路径;二是Git规则匹配优先级、Windows平台大小写配置问题导致规则漏匹配;三是反向取反规则覆盖了目录忽略规则。按以下步骤操作即可修复:
- 补充缺失的忽略规则
打开项目根目录的.gitignore文件,在文件最末尾追加以下规则,确保规则不会被前面的内容覆盖:
用# Unity Bee构建后端生成文件 **/[Bb]ee/** **/[Bb]ee_*/** Library/BeeArtifactCache/ Temp/bee* *.bee[Bb]ee的写法是为了兼容Windows文件系统大小写不敏感的特性,避免因为文件夹名首字母大小写差异导致匹配失败。 - 排查反向规则冲突
如果你在.gitignore中写过!*.cs、!*.asset这类保留特定后缀文件的反向规则(以!开头),这类规则优先级高于前面写的目录忽略规则,会把被忽略目录下对应后缀的文件重新加入跟踪。前面追加到文件末尾的Bee目录强制忽略规则,会覆盖这类反向规则的影响,无需额外修改其他内容。 - 校验Git配置
执行以下命令检查Windows环境下Git的大小写配置:
如果返回值为git config core.ignorecasefalse,执行以下命令修正,避免大小写不匹配导致的规则失效:git config core.ignorecase true - 定位单个漏忽略文件的冲突规则
如果仍有个别文件未被忽略,执行以下命令可以直接定位到导致该文件被跟踪的具体规则位置:
根据输出的规则文件和行号,删除或调整冲突的跟踪规则即可。git check-ignore -v 漏忽略文件的完整相对路径 - 重新生成缓存
所有规则调整完成后,重新执行缓存清理和暂存操作:
此时检查状态就能看到所有Bee相关的大文件都已被正常忽略,git rm -r --cached . git add . git status --ignoredgit push操作不会再因为大文件超限失败。
注意:不要在.gitignore中写绑定项目名的硬编码路径(比如
/你的项目名/Bee/),后续修改项目名或移动目录时这类规则会直接失效,用通配符的相对路径规则兼容性最好。
内容的提问来源于stack exchange,提问作者david_johnson358
相关产品推荐
相关产品推荐

