You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Git LFS与hooks文件夹不应在.git外?Unity项目异常排查

解决git-lfs在Unity项目中生成根目录hooks/lfs文件夹的问题

我之前在Unity项目里用git-lfs的时候也碰到过一模一样的情况——本来应该藏在.git目录里的钩子和lfs相关文件,居然跑到项目根目录变成未追踪文件了,太闹心了。下面说说可能的原因和你需要检查/修复的步骤:

可能的核心原因

这种情况90%是git-lfs初始化时的路径配置错误,导致它把钩子文件和lfs缓存目录安装到了项目根目录,而不是标准的.git子目录里。常见的触发场景:

  • 执行git lfs install时,当前工作目录不是项目根目录,或者误加了奇怪的参数;
  • 你的git全局/本地配置里,core.hooksPath被改成了项目根目录的hooks/(而不是默认的.git/hooks);
  • 第三方工具(比如某些Git客户端)安装git-lfs时出现了路径错误。

你需要检查的内容&修复步骤

1. 检查git的钩子路径配置

先打开终端,在项目根目录执行这两个命令,看看配置是否异常:

# 检查全局钩子路径
git config --global --get core.hooksPath
# 检查当前项目的钩子路径
git config --local --get core.hooksPath
# 检查git-lfs的钩子目录配置
git config --get lfs.hooksDir

正常情况下,这几个命令要么输出空(用默认的.git/hooks),要么输出.git/hooks类似的路径。如果输出是./hooks或者hooks/,那就是问题根源。

2. 确认根目录hooks/lfs文件夹的内容

打开项目根目录的hooks文件夹,看看里面是不是有pre-pushpost-checkout这些带有git-lfs标识的脚本?再看lfs文件夹,是不是有objectstmp这类缓存目录?
如果是的话,这些内容本来应该放在.git/hooks.git/lfs目录下

3. 修复步骤

第一步:迁移文件到正确位置

把根目录的hooks文件夹里的所有文件,移动到.git/hooks目录下(如果.git/hooks里有旧的同名文件,先备份再覆盖);把根目录的lfs文件夹整个移动到.git目录下,变成.git/lfs

第二步:重新正确初始化git-lfs

在项目根目录执行:

git lfs install --local

这个命令会自动帮你配置好正确的钩子路径和lfs目录,确保后续操作不会再出错。

第三步:清理根目录的无效文件夹

先预览要删除的内容(避免误删):

git clean -n hooks/ lfs/

确认输出里只有这两个文件夹后,执行删除:

git clean -f hooks/ lfs/

现在再执行git status,应该就看不到这两个未追踪文件了。

第四步:验证修复效果

执行git lfs status,看看你的Unity资源是不是正常被lfs追踪;再尝试提交一个测试文件,确认根目录不会再生成hooks/lfs文件夹。

额外注意点

从你提供的.gitattributes内容来看,配置是完全没问题的,覆盖了Unity项目里需要用lfs管理的所有常见资源类型,所以问题肯定不在这。另外:

  • 不要随便修改core.hooksPath配置,除非你有特殊的钩子管理需求;
  • 如果是团队协作,提醒队友检查自己的git-lfs安装配置,避免同样的问题;
  • 后续尽量用官方的git-lfs命令行工具操作,少用第三方客户端的自动安装功能,减少路径错误概率。

内容的提问来源于stack exchange,提问作者Jawap

火山引擎 最新活动