配置Git LFS跟踪规则后新提交webp文件未被LFS识别求助
问题根因
两个新添加的webp文件未被LFS识别的核心原因是:你执行git add将文件加入暂存区时,Git LFS的过滤钩子未正常触发,暂存区存储的是直接写入Git仓库的完整文件对象,而非LFS指针文件。从你贴出的git lfs status输出可以直接验证这一点——两个新文件后标记为(Git: 哈希值),代表会被Git直接存储,只有标记为(LFS: 哈希值)的文件才会走LFS存储流程。
这个问题通常是两种情况导致的:
- 安装Git LFS后未在仓库内执行初始化,LFS所需的Git钩子未正确挂载
- 你在
.gitattributes的LFS规则生效前,就已经把两个新webp文件加入了暂存区,缓存的暂存内容不会自动重新走LFS转换
你之前遇到的webp文件损坏、历史分叉问题,基本是git lfs migrate操作不当导致的——迁移过程中如果没有正确拉取LFS对象,本地仓库里存的只是几十字节的LFS指针文件,打开自然会显示图像损坏。
修复步骤
按顺序在仓库根目录执行以下操作即可解决:
- 先重新初始化LFS钩子,确保后续文件操作能触发LFS规则:
git lfs install - 撤销你刚才提交的两个新webp文件的错误提交,保留文件修改在暂存区:
git reset --soft HEAD~1 - 把暂存区里缓存的错误webp文件移出暂存区,清除旧的暂存缓存:
git restore --staged public/images/closed.webp public/images/open.webp - 验证LFS规则正常生效后,重新将两个webp文件加入暂存区:
先执行git lfs track,确认输出列表中存在*.webp filter=lfs diff=lfs merge=lfs -text规则,再执行git add public/images/closed.webp public/images/open.webp - 验证识别状态:执行
git lfs status,此时两个新webp文件后会显示(LFS: 哈希值),代表已经被LFS正确接管 - 重新提交变更:
git commit -m 'new bg images',提交完成后执行git lfs ls-files,就能看到closed.webp和open.webp出现在LFS文件列表中,后续正常推送即可绕过GitHub的单文件大小限制。
额外注意事项
如果后续需要把仓库历史中已经直接提交到Git的大文件统一迁移到LFS,执行git lfs migrate import --include="*.webp"前一定要先备份整个本地仓库文件夹,避免迁移过程出错导致历史损坏、文件丢失。迁移完成后需要用强推方式更新远程分支,确保协作者也同步拉取最新的迁移后历史。
内容的提问来源于stack exchange,提问作者septerr
相关产品推荐
相关产品推荐

