如果 Mac 工作文件夹中的某个文件包含以 version https://git-lfs.github.com/spec/v1 开头的文本,则你看到的是它的 Git LFS 指针,而非大文件的实际内容。在“终端”中进入该仓库,确保已安装并初始化 Git LFS,然后运行 git lfs pull。该命令会为已检出的分支下载 LFS 对象并更新工作文件。它只能恢复可从已配置的远程仓库获取或已存在于本地 LFS 缓存中的内容。Git LFS 常见问题解答

1. 在“终端”中打开仓库并确认该文件是指针

打开“终端”并切换到仓库目录。如果你不确定文件夹的位置,请键入 cd (包含末尾空格),将仓库文件夹从访达(Finder)拖入“终端”窗口,然后按 Return 键。检查你是否处于 Git 工作树中,并检查该文件(将路径替换为其真实路径):

git status --short
head -n 3 'path/to/file.ext'

典型的指针包含一个版本行、一个 oid sha256: 行和一个大小(size)行。Git LFS 将这个小指针保存在 Git 中,而实际内容则存储在 LFS 存储库中。在文本编辑器中看到该指针并不意味着编辑器可以检索丢失的对象;恢复操作需要通过 Git LFS 完成。Git LFS 概述

2. 如有需要,安装并初始化 Git LFS

检查该命令是否可用:

git lfs version

如果“终端”提示 lfs 不是 Git 命令,请使用适用于你 Mac 的受信任安装方式安装 Git LFS,然后打开新的“终端”窗口再次检查。项目文档说明 git lfs install 是针对用户账户的一次性配置;运行它可以配置 Git 的 LFS 过滤器和钩子:

git lfs install

此设置与下载文件内容是相互独立的。如果在克隆或检出过程中跳过了 LFS,Git LFS 常见问题解答特别建议运行 git lfs pull 来替换工作树中的指针。Git LFS 常见问题解答

3. 下载并恢复当前分支的文件

在仓库目录下,运行:

git lfs pull

该命令会从默认远程仓库获取当前引用的 LFS 内容,并检出所需的工作树文件。对于普通的克隆操作且指针属于你已检出的分支,这是最简单的恢复步骤。等待命令执行完毕并查看所有错误提示;如果执行后仍是指针,则意味着该文件的下载或检出未完成。Git LFS 命令参考

如果你之前已经获取(fetch)了该对象,但工作文件仍然包含指针,请尝试:

git lfs checkout -- 'path/to/file.ext'

git lfs checkout 使用本地 LFS 存储中已有的内容;它不会下载任何内容。它会恢复丢失的文件或包含匹配指针的文件,并且不会覆盖已修改的文件。这使得它在成功获取对象后非常有用,但如果对象既未在本地缓存也未成功获取,则无法进行恢复。git-lfs-checkout 手册

4. 如果文件仍然显示为指针

检查预期路径是否已被 LFS 跟踪,以及仓库是否配置了远程仓库:

git lfs ls-files
 git remote -v

如果 git lfs ls-files 未列出该文件,请确认当前分支中已提交的 .gitattributes 规则是否将其路径标记为 LFS。现在仅仅运行 git lfs track 并不能检索历史内容,修改跟踪规则也不会将普通的 Git blob 转换为 LFS 对象。Git LFS 指出,已存在于仓库中的文件需要进行重新规范化(renormalization)并提交才能转换;不要仅仅为了恢复单个文件而对仓库做此更改。Git LFS 常见问题解答

如果文件已列出,请确认你位于包含目标版本的正确分支上,并且配置的远程仓库是存储其 LFS 对象的仓库。对于其他已配置的远程仓库,请从该远程仓库获取,然后再从本地缓存恢复:

git lfs fetch 'remote-name'
git lfs checkout -- 'path/to/file.ext'

git lfs fetch 下载对象但不更新工作副本;git lfs checkout 执行该本地更新。默认情况下,获取当前引用使用的是默认远程仓库,遵循 Git 的远程仓库选择规则。git-lfs-fetch 手册

拉取失败可能是连接、身份验证、访问权限或对象缺失等问题所致。请解决对已配置 Git/LFS 服务器的访问问题,然后重试。如果 LFS 服务器上已不再有该对象,仅凭指针是无法重建原始文件的:请询问仓库维护者其他分支、备份、克隆或经授权的 LFS 存储库中是否包含该文件。切勿用猜测的内容替换指针,或将其直接提交当作已恢复的文件。

确认恢复成功

成功拉取或检出后,再次检查该文件。其前几行不应再是 LFS 指针元数据;请使用适用于该文件类型的应用程序确认恢复的内容可以正常打开。同时检查 git status --short。如果你的工作副本之前是指针,则内容发生更改是预料之中的,但在暂存或提交任何更改之前,请核对报告的路径。

来源