GitHub浏览/拉取代码返回SHA哈希指针而非实际代码如何解决
问题成因
该问题由Git LFS(大文件存储)机制导致:
- 你的GitHub仓库提前配置了Git LFS追踪规则,你提交的文件匹配到了对应规则,Git提交时不会将原始文件存入普通Git版本库,只会在版本库存放你看到的LFS指针文本,真实文件会被上传到专属的LFS存储服务器
- GitHub默认不会直接渲染LFS存储的文件内容到代码预览页,因此浏览器访问时只能通过view raw或下载按钮获取原始文件
- 你本地未安装/启用Git LFS客户端,拉取代码时Git不会自动从LFS服务器拉取真实文件,只会拉取版本库中存储的指针文件
修复方案
恢复本地真实文件
- 第一步:安装Git LFS客户端
- Debian/Ubuntu系操作系统执行:
sudo apt install git-lfs - macOS执行:
brew install git-lfs - Windows系统默认最新版Git for Windows已自带Git LFS,无需额外安装
- Debian/Ubuntu系操作系统执行:
- 第二步:在本地仓库根目录执行
git lfs install,启用本地Git的LFS支持 - 第三步:执行
git lfs pull,即可拉取所有LFS指针对应的真实文件,覆盖当前的指针内容
后续避免小文件被LFS追踪(可选)
如果不需要让对应文件走LFS存储、希望GitHub能直接预览源码,可以修改仓库根目录的.gitattributes文件,删除对应文件后缀/路径的LFS追踪规则,之后重新提交文件即可。注意已经通过LFS提交的历史版本文件仍会存储在LFS服务器中,不会自动转换为普通Git存储。
内容的提问来源于stack exchange,提问作者Richard Garfield
相关产品推荐
相关产品推荐

