Если файл в рабочей папке на вашем Mac содержит текст, начинающийся с version https://git-lfs.github.com/spec/v1, вы видите указатель Git LFS, а не содержимое большого файла. В Терминале перейдите в репозиторий, убедитесь, что Git LFS установлен и инициализирован, а затем выполните команду git lfs pull. Эта команда скачивает объекты LFS для извлеченной ветки и обновляет рабочие файлы. Она может восстановить только то содержимое, которое доступно на настроенном удаленном сервере или уже находится в локальном кэше LFS. Git LFS FAQ

1. Откройте репозиторий в Терминале и убедитесь, что файл является указателем

Откройте Терминал и перейдите в каталог репозитория. Если вы не уверены, где находится папка, введите cd (включая пробел на конце), перетащите папку репозитория из Finder в окно Терминала и нажмите Return. Убедитесь, что вы находитесь в рабочем дереве Git, и проверьте файл, указав его фактический путь:

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

Типичный указатель содержит строку с версией, строку oid sha256: и строку с размером. Git LFS сохраняет этот небольшой указатель в Git, в то время как фактическое содержимое находится в хранилище LFS. То, что указатель виден в текстовом редакторе, не означает, что редактор может получить отсутствующий объект; восстановление выполняется через Git LFS. Обзор Git LFS

2. Установите и инициализируйте Git LFS при необходимости

Проверьте, доступна ли команда:

git lfs version

Если Терминал сообщает, что lfs не является командой Git, установите Git LFS надежным для вашего Mac способом, затем откройте новое окно Терминала и проверьте снова. В документации проекта указано, что git lfs install выполняется один раз для учетной записи пользователя; запустите ее для настройки фильтров и хуков LFS в Git:

git lfs install

Эта настройка не связана с загрузкой содержимого файлов. Если LFS был пропущен во время клонирования или переключения веток, FAQ по Git LFS специально рекомендует выполнить git lfs pull, чтобы заменить указатели в рабочем дереве. Git LFS FAQ

3. Скачайте и восстановите файлы текущей ветки

Из каталога репозитория выполните:

git lfs pull

Команда извлекает содержимое LFS для текущей ссылки с удаленного сервера по умолчанию и обновляет соответствующие файлы в рабочем дереве. Это самый простой шаг восстановления для обычного клона, где указатель принадлежит ветке, на которую вы переключены. Дождитесь завершения команды и ознакомьтесь с возможными ошибками; если указатель остался, значит, загрузка или извлечение для этого файла не были завершены. Справочник команд Git LFS

Если вы уже скачивали объект ранее, но рабочий файл все еще содержит указатель, попробуйте:

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

Команда git lfs checkout использует содержимое, доступное в локальном хранилище LFS; она ничего не скачивает. Она восстанавливает отсутствующие файлы или файлы, содержащие соответствующий указатель, и не перезаписывает измененные файлы. Это делает ее полезной после успешного скачивания (fetch), но она не сможет восстановить объект, который не был закэширован локально или успешно получен. Руководство по git-lfs-checkout

4. Если файл все еще отображается как указатель

Проверьте, отслеживается ли нужный путь через LFS и настроен ли удаленный репозиторий:

git lfs ls-files
 git remote -v

Если git lfs ls-files не выводит этот файл, убедитесь, что закоммиченные в текущей ветке правила .gitattributes указывают этот путь для LFS. Простой запуск git lfs track в данный момент не вернет прошлые данные, а изменение правил отслеживания не превратит обычный Git-блоб в объект LFS. В документации Git LFS отмечается, что файлы, уже находящиеся в репозитории, требуют перенормализации и коммита для преобразования; не вносите такие изменения в репозиторий только ради восстановления одного файла. Git LFS FAQ

Если файл есть в списке, убедитесь, что вы находитесь на ветке, содержащей нужную версию, и что настроенный удаленный репозиторий действительно содержит его объекты LFS. Если используется другой настроенный удаленный репозиторий, скачайте данные с него, а затем восстановите файл из локального кэша:

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

Команда git lfs fetch загружает объекты, но не обновляет рабочую копию; локальное обновление выполняет git lfs checkout. По умолчанию скачивание текущей ссылки использует удаленный репозиторий по умолчанию в соответствии с правилами выбора remote в Git. Руководство по git-lfs-fetch

Ошибка при выполнении pull может указывать на проблемы с подключением, аутентификацией, доступом или отсутствием объекта. Восстановите доступ к настроенному серверу Git/LFS и повторите попытку. Если на сервере LFS объекта больше нет, восстановить исходный файл по одному лишь указателю невозможно: уточните у мейнтейнера репозитория, сохранился ли он в другой ветке, резервной копии, клоне или авторизованном хранилище LFS. Не заменяйте указатель содержимым «наугад» и не коммитьте его под видом восстановленного файла.

Проверка восстановления

После успешного выполнения pull или checkout проверьте файл снова. Его первые строки больше не должны быть метаданными указателя LFS; откройте файл в подходящем приложении, чтобы убедиться, что восстановленное содержимое корректно читается. Также проверьте git status --short. Изменение содержимого ожидаемо, если в рабочей копии находился указатель, но обязательно просмотрите статус по указанному пути перед индексацией или коммитом.

Источники