Git LFS添加推送文件后:引用查看、成员访问等技术疑问
Git LFS 实操疑问解答
问题1:是否仅需变更.gitattributes文件?Git LFS会在仓库存储文件引用,为何在GitHub提交中看不到该引用文件?
- 是的,
git lfs track filename本质就是修改.gitattributes文件,添加对应的LFS追踪规则,所以只需要这个文件的变更就足够完成LFS配置。 - 你看不到引用文件(即LFS指针)是因为GitHub会自动解析LFS指针:仓库里实际存储的是一个几十字节的文本指针文件(内容包含oid、size等LFS标识),但GitHub会直接显示该指针对应的实际文件内容/预览,不会展示指针本身。你可以在本地仓库执行
git cat-file -p HEAD:file_name查看这个指针的具体内容。
问题2:实际文件存储在其他服务器,具体可从何处查看?
- 如果你用的是GitHub,实际文件存储在GitHub的LFS专用服务器上:
- 仓库页面中,点击对应的LFS文件,页面顶部会有"This is a Git LFS file"的提示,确认它的存储类型;
- 进入仓库的「Settings」→「Git LFS」,可以查看当前仓库所有LFS文件的列表、存储占用等信息;
- 本地的话,已下载的LFS文件会存在仓库根目录下的
.git/lfs/objects目录中,按oid的前缀分文件夹存储。
问题3:当分支合并到master后,已正确配置Git LFS的团队成员能否仅通过git pull origin master获取该文件?
- 可以。只要团队成员完成了Git LFS的基础配置(安装Git LFS并执行
git lfs install初始化),执行git pull时,Git LFS会自动检测仓库中的LFS指针,后台下载对应的实际文件并替换指针,最终成员本地会拿到完整的实际文件。
问题4:执行git lfs ls-files未显示任何文件,原因是什么?
结合你的操作步骤,可能的原因有这些:
- 追踪规则未生效:检查
git lfs track的输出,确认目标文件确实被纳入追踪(执行git lfs track会列出当前所有追踪规则)。如果文件名/路径有误(比如大小写不匹配、相对路径错误),追踪规则不会生效; - 文件已在追踪前提交:如果在执行
git lfs track之前,你已经把原文件提交到了Git仓库,Git LFS不会自动将已提交的文件转换为指针。这种情况需要用git lfs migrate import --include="file_name"来迁移历史提交中的文件; - LFS过滤器未正确初始化:
git lfs install需要确保在当前仓库生效(如果是全局初始化git lfs install --global更稳妥)。可以执行git config filter.lfs.smudge和git config filter.lfs.clean,确认输出包含Git LFS的对应命令; - 提交时未正确生成指针:执行
git add file_name后,检查git status的输出,如果显示的是原文件的变更(而不是指针文件),说明LFS过滤器没工作。可以尝试重新初始化LFS,或者检查.gitattributes文件是否被正确提交; - 命令执行路径错误:确保你是在仓库的根目录下执行
git lfs ls-files,否则可能无法识别追踪规则。
内容的提问来源于stack exchange,提问作者Waleed Farrukh
相关产品推荐
相关产品推荐

