已在待提交对象中显示的文件未出现在git lfs ls-files结果中
问题排查与解决方案
可能的遗漏点
追踪规则不匹配
检查.gitattributes中的LFS规则是否与目标tarball的路径/扩展名完全匹配:- 若文件在子目录(如
subdir/archive.tar),仅用*.tar无法覆盖子目录,需改为**/*.tar(匹配所有层级的tar文件); - 注意大小写敏感,比如规则是
*.TAR但文件是*.tar会直接失效。
- 若文件在子目录(如
未让Git重新加载追踪规则
提交.gitattributes后,Git不会自动将新规则应用到后续添加的文件。必须执行:git add --renormalize .该命令会强制Git重新处理所有文件的属性,确保新的LFS规则生效。
git lfs ls-files的默认行为限制
默认情况下,git lfs ls-files仅显示已提交到仓库的LFS追踪文件。若要查看待提交的文件,需添加参数:git lfs ls-files --include-uncommitted
正确添加tarball到LFS的步骤
配置追踪规则:
git lfs track "**/*.tar" # 匹配所有层级的tar文件,可根据实际调整规则此命令会自动更新
.gitattributes文件。提交规则文件(可选,也可与tarball一起提交):
git add .gitattributes git commit -m "Update LFS tracking rules for tarballs"重新加载规则并添加目标文件:
git add --renormalize . git add path/to/your/archive.tar验证追踪状态:
git lfs status # 应显示文件在"Objects to be committed"列表中 git lfs ls-files --include-uncommitted # 可查看到该待提交文件提交并推送:
git commit -m "Add tarball tracked by LFS" git push
针对已错误提交的文件修复
如果tarball已经以普通文件的方式提交到仓库,可通过以下步骤修正:
- 移除本地缓存的普通文件版本:
git rm --cached path/to/your/archive.tar - 重新应用LFS规则并添加文件:
git add --renormalize . git add path/to/your/archive.tar - 提交修复:
若需要修改历史提交记录,可使用git commit -m "Fix: Track tarball with LFS"git lfs migrate import:git lfs migrate import --include="**/*.tar" --ref=HEAD~n # n为需要回溯的提交数
内容的提问来源于stack exchange,提问作者3yakuya
相关产品推荐
相关产品推荐

