重命名文件后git lfs无法追踪该文件的问题如何解决?
问题原因
Git LFS 不会自动识别系统/原生Git重命名操作产生的文件路径变更:
- 直接通过文件管理器改名、或者用系统
mv命令修改LFS追踪文件的名称/路径时,Git会将变更识别为「删除旧文件+新增新文件」,新增的文件不会自动关联LFS追踪规则 - 如果原追踪规则为单独指定的文件路径,重命名后路径不匹配原有规则,也会导致LFS追踪失效
解决方案
未提交改动的单文件修复
- 先撤销暂存区和工作区的重命名相关改动,执行命令:
git restore --staged <重命名后的文件路径> && git restore <重命名后的文件路径> - 使用Git LFS 官方提供的重命名命令操作,会自动保留LFS追踪关联:
git lfs mv <原文件路径> <新文件路径> - 正常提交推送即可:
git add . git commit -m "rename LFS tracked file" git push
已提交改动的批量修复
如果已经将重命名后的非LFS文件提交到了本地分支,按以下步骤修复:
- 先确认
.gitattributes中包含对应文件的追踪规则,例如按后缀匹配的规则:git lfs track "*.bin",或者单独指定新文件路径:git lfs track <重命名后的文件路径> - 刷新Git文件缓存,将文件从普通Git存储迁移到LFS存储:
git rm --cached <重命名后的文件路径> git add <重命名后的文件路径>
- 提交修复并推送:
git commit -m "restore LFS tracking for renamed files" git push
验证方法
执行命令git lfs ls-files,如果重命名后的文件路径出现在返回列表中,说明已经恢复LFS追踪。
内容的提问来源于stack exchange,提问作者TMin
相关产品推荐
相关产品推荐

