Git LFS

GitHub и участники проекта Git LFS · лицензия MIT

Хранит видео, макеты и архивы проекта рядом с Git так, чтобы история не раздувалась. В репозитории лежат короткие указатели, а сами файлы агент скачивает, когда они нужны.

macOS · Windows · LinuxНа компьютере, на сервере и в контейнереБесплатно, MIT

✓ Проверено 16.10.2026: Ubuntu 24.04 (x86_64) в одноразовом контейнере Docker на сервере, от root, Git 2.43.0 из образа: git-lfs 3.8.0 из репозитория packagecloud через apt и архив 3.8.0 с GitHub. Что именно проверяли

Установить агентом ↓

Какую задачу решает

Консольная программа-дополнение к Git для тяжёлых файлов: видео, макетов PSD, архивов, моделей. Агент указывает, какие файлы отдать Git LFS, и дальше работает с репозиторием обычными командами Git. В истории остаётся указатель на 130 с небольшим байт с суммой sha256 и размером, а сам файл лежит в отдельном хранилище на компьютере и на сервере репозитория. Склонировать проект можно без тяжёлых файлов и скачать потом только нужные.

  • Отдаёт в Git LFS файлы по шаблону (git lfs track "*.mp4"), шаблоны записывает в .gitattributes, а этот файл коммитят вместе с проектом.
  • Показывает, какие файлы уже лежат в Git LFS и сколько весят (git lfs ls-files -s).
  • Скачивает тяжёлые файлы выборочно: в прогоне git lfs pull --include "*.mp4" скачал видео, а макет PSD остался указателем.
  • Переносит в Git LFS файлы, которые уже попали в историю (git lfs migrate import). История при этом переписывается.
  • Проверяет целостность файлов Git LFS текущего коммита (git lfs fsck) и переносит испорченные копии в .git/lfs/bad.

Пример результата

Говоришь агенту

В папке сайта лежат видео и макеты PSD. Подключи Git LFS, чтобы они не раздували историю, отправь всё в репозиторий и проверь, что в самом Git остались только указатели.

Что получится

Мы прогнали этот сценарий на тестовых файлах: видео 20 971 520 байт и макет 8 388 608 байт. Команда git lfs track "*.mp4" "*.psd" записала шаблоны в .gitattributes, после коммита git lfs ls-files показал оба файла. В истории на месте видео лежит указатель 133 байта с суммой sha256 и размером. После git push в репозиторий на диске объекты Git заняли 790 байт, файлы LFS легли отдельно, 29 360 128 байт. Новый клон получил оба файла, их суммы sha256 совпали с исходными.

Паспорт

Кто делает
GitHub и участники проекта Git LFS
Сайт
git-lfs.com
Исходный код
github.com/git-lfs/git-lfs
Лицензия
MIT
Версия
3.8.0 на 16.10.2026
Системы
macOS · Windows · Linux
Где работает
На компьютере, на сервере и в контейнере
Цена
Бесплатно
Проверка
Проверено 16.10

Установить агентом

Для Claude Code, Codex, Hermes и любого агента с терминалом
Установи программу «Git LFS». Работай по шагам и после каждого коротко говори, что сделал.

Что это за программа (каталог smyslokod.ru, официальные источники сверены 16.10.2026):
- официальный сайт: https://git-lfs.com
- исходный код: https://github.com/git-lfs/git-lfs
- инструкция по установке: https://github.com/git-lfs/git-lfs/tree/v3.8.0/docs/man
- актуальная версия на 16.10.2026: 3.8.0
- лицензия: MIT
- для работы нужно (обязательно): Git - Git LFS работает как дополнение к Git. Пакет для Ubuntu требует Git 2.0.0 или новее, в прогоне стоял 2.43.0
- для работы нужно (в отдельных случаях): Сервер репозитория с поддержкой Git LFS - только чтобы отправлять тяжёлые файлы на сервер. GitHub поддерживает Git LFS и считает место под эти файлы отдельно, в прогоне хватило репозитория на диске
- для работы нужно (в отдельных случаях): Homebrew - только для установки на Mac через brew

Правила:
1. Ничего не устанавливай и не меняй, пока я не скажу «да» на твой план.
2. Ставь только способами из этого промпта. Сторонние сборки, скрипты с форумов и из чужих репозиториев не бери.
3. Мои проекты не трогай: не меняй их файлы, виртуальные окружения и списки зависимостей (package.json, requirements.txt, pyproject.toml).
4. Команды с sudo, правку профиля оболочки (~/.zshrc, ~/.bashrc) и переменной PATH делай только после моего отдельного «да» на каждую.
5. Не проси у меня пароли и ключи и не выводи их. Если нужен пароль администратора, дай команду, я выполню её сам.
6. Ставь Git LFS из packagecloud и запускай sudo только после «да» человека: скрипт добавляет в систему источник пакетов.
7. Перед git lfs track покажи человеку, какие шаблоны отдашь в Git LFS и сколько весят такие файлы. Шаблон бери в кавычки и закоммить .gitattributes вместе с файлами.
8. Когда соберёшься делать git push, сначала посмотри git lfs ls-files: тяжёлые файлы должны быть в списке.
9. git lfs migrate import, принудительную отправку веток и git lfs prune запускай только после отдельного «да» на каждую команду.
10. Не входи в учётные записи площадок и не проси ключи в чат. Вход на сервер репозитория человек настраивает сам.

Шаги:
0. Определи, где ты работаешь: мой компьютер, сервер или контейнер. Какая система и процессор, какие менеджеры пакетов есть (Homebrew, apt, winget, uv, pipx). Ставить нужно туда, где ты сам запускаешь команды.
   - на компьютере: там, где лежит рабочая копия проекта с тяжёлыми файлами.
   - на сервере: работает в терминале без окон. В прогоне все команды шли без вопросов.
   - в контейнере: мы проверяли в контейнере Ubuntu 24.04 от root, установка из packagecloud заняла 22 секунды.
1. Проверь, не стоит ли программа уже: git lfs version ; which -a git-lfs. Если стоит и запускается, ничего не ставь и переходи к шагу 5.
2. Проверь, что есть всё нужное для работы: Git. Чего нет, внеси в план отдельным пунктом. Проверь свободное место на диске: нужно Пакет из packagecloud весит 9 620 656 байт по списку пакетов репозитория и ставит /usr/bin/git-lfs размером 20 487 760 байт. Из архива GitHub программа заняла 13 947 040 байт в ~/.local/bin, сам архив весит 5 909 255 байт. Место под тяжёлые файлы считай отдельно: в прогоне видео и макет заняли в удалённом репозитории 29 360 128 байт..
3. Составь план: каким одним способом из списка ниже будешь ставить, что появится на диске и сколько места займёт, что поменяется в системе и как потом удалить. Покажи план и жди моего «да».
   Способы из официальных источников:
   - macOS, Homebrew: brew install git-lfs && git lfs install (Формула того же проекта, на 16.10.2026 ставит 3.8.0. После установки Homebrew просит выполнить git lfs install, эта команда включает Git LFS в ~/.gitconfig. Мы её не проверяли)
   - Windows, Git for Windows: winget install --id Git.Git -e --source winget (Команда со страницы git-scm.com ставит Git for Windows, а Git LFS по README проекта входит в его состав. Если Git for Windows уже стоит, ставить ничего не нужно, проверь git lfs version. На Windows мы не проверяли)
   - Linux, apt (репозиторий packagecloud): curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash && sudo apt-get install git-lfs (Команды из INSTALLING.md проекта. Скрипт packagecloud от root добавляет источник пакетов /etc/apt/sources.list.d/github_git-lfs.list и ключ /etc/apt/keyrings/github_git-lfs-archive-keyring.gpg, ставит apt-transport-https (curl и gnupg, если их нет) и обновляет списки apt. Пакет сам включает Git LFS для всех пользователей через /etc/gitconfig: в прогоне клон с файлом из Git LFS скачался целиком без git lfs install у пользователя. Мы ставили так от root без sudo, с закреплённой версией git-lfs=3.8.0)
   - Linux, готовый архив с GitHub: curl -LO https://github.com/git-lfs/git-lfs/releases/download/v3.8.0/git-lfs-linux-amd64-v3.8.0.tar.gz && tar -xzf git-lfs-linux-amd64-v3.8.0.tar.gz && mkdir -p ~/.local && ./git-lfs-3.8.0/install.sh --local (Архив для x86-64 со страницы выпуска, сумма sha256 указана там же. Скрипт install.sh из архива с ключом --local кладёт программу в ~/.local/bin и запускает git lfs install для пользователя, sudo не нужен. Без ключа он ставит в /usr/local/bin, и тогда нужны права на запись туда. Папка ~/.local должна существовать заранее, а ~/.local/bin должна быть в PATH: настройки Git вызывают программу по имени git-lfs. Мы ставили так, сумму сверили)
4. Установи по согласованному плану. Если что-то идёт не так, как в плане, остановись и спроси.
5. Проверь результат:
   - git lfs version: программа запускается без ошибки;
   - Во временной папке создай тестовый сайт с видео и макетом PSD из случайных байт. Отдай их Git LFS по шаблонам, закоммить, проверь указатель в истории, отправь в голый репозиторий на диске, склонируй без тяжёлых файлов и скачай их выборочно, сверь суммы sha256. Перенеси в Git LFS архив из готовой истории, проверь git lfs fsck на испорченном файле, удали программу и её настройки. Делай это во временной папке и не трогай мои файлы.
     curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash
     apt-get -y install git-lfs=3.8.0
     git lfs version
     git lfs install
     git config --global user.email test@example.invalid && git config --global user.name Test && git config --global init.defaultBranch main
     mkdir -p /work/site/media /work/site/design && cd /work/site
     python3 -c "import random; random.seed(42); open('media/intro.mp4','wb').write(random.randbytes(20*1024*1024)); open('design/banner.psd','wb').write(random.randbytes(8*1024*1024))"
     printf '%s\n' '<!doctype html><title>Тест</title><video src="media/intro.mp4"></video>' > index.html
     sha256sum media/intro.mp4 design/banner.psd
     git init -q
     git lfs track "*.mp4" "*.psd"
     git add .gitattributes index.html media design && git commit -qm "site with media"
     git lfs ls-files -s
     git cat-file -p HEAD:media/intro.mp4
     git init -q --bare /work/remote.git
     git remote add origin file:///work/remote.git && git push -q origin main
     du -sb /work/remote.git/objects /work/remote.git/lfs
     cd /work && GIT_LFS_SKIP_SMUDGE=1 git clone -q file:///work/remote.git light
     cd /work/light && git lfs pull --include "*.mp4"
     git lfs pull && sha256sum media/intro.mp4 design/banner.psd
     cd /work && git clone -q file:///work/remote.git full && sha256sum full/media/intro.mp4 full/design/banner.psd
     mkdir /work/old && cd /work/old && git init -q
     python3 -c "import random; random.seed(7); open('assets.zip','wb').write(random.randbytes(5*1024*1024))"
     echo readme > README.md && git add . && git commit -qm one && echo more >> README.md && git commit -qam two
     git lfs migrate info --everything
     git lfs migrate import --include="*.zip" --everything
     git cat-file -p HEAD:assets.zip
     git reflog expire --expire=now --all && git gc -q --prune=now && git count-objects -vH
     cd /work/site && git lfs fsck
     printf broken > "$(find .git/lfs/objects -type f | head -1)" && git lfs fsck
     cd /work && git lfs pull
     git lfs uninstall
     apt-get -y purge git-lfs
     rm -f /etc/apt/sources.list.d/github_git-lfs.list /etc/apt/keyrings/github_git-lfs-archive-keyring.gpg
     curl -sL -o /tmp/lfs.tgz https://github.com/git-lfs/git-lfs/releases/download/v3.8.0/git-lfs-linux-amd64-v3.8.0.tar.gz
     sha256sum /tmp/lfs.tgz
     mkdir -p /tmp/lfsbin && tar -xzf /tmp/lfs.tgz -C /tmp/lfsbin
     /tmp/lfsbin/git-lfs-3.8.0/git-lfs version
   - если ты работаешь в папке моего проекта, покажи git status: от установки в проекте не должно появиться изменений.
6. Итог одним сообщением: что установлено, какой версии и куда, сколько места заняло, что поменялось в системе и как всё удалить (macOS, Homebrew: git lfs uninstall && brew uninstall git-lfs; Windows, Git for Windows: git lfs uninstall; Linux, apt (репозиторий packagecloud): git lfs uninstall && sudo apt-get purge git-lfs && sudo rm -f /etc/apt/sources.list.d/github_git-lfs.list /etc/apt/keyrings/github_git-lfs-archive-keyring.gpg && sudo apt-get update; Linux, готовый архив с GitHub: git lfs uninstall && rm -f ~/.local/bin/git-lfs).

Если на любом шаге ошибка, не чини наугад: покажи текст ошибки и скажи, что, по-твоему, случилось. Частые проблемы: https://smyslokod.ru/cli/git-lfs#problemy

Промпт собран из официальных инструкций, сверенных 16.10.2026. Агент сначала проверит, что уже стоит, покажет план с местом на диске и способом удаления и без твоего «да» ничего не поставит.

Как ставят вручную

Способы из официальных источников, у каждого ссылка на первоисточник.

  • macOS · Homebrew · источник

    brew install git-lfs && git lfs install

    Формула того же проекта, на 16.10.2026 ставит 3.8.0. После установки Homebrew просит выполнить git lfs install, эта команда включает Git LFS в ~/.gitconfig. Мы её не проверяли

  • Windows · Git for Windows · источник

    winget install --id Git.Git -e --source winget

    Команда со страницы git-scm.com ставит Git for Windows, а Git LFS по README проекта входит в его состав. Если Git for Windows уже стоит, ставить ничего не нужно, проверь git lfs version. На Windows мы не проверяли

  • Linux · apt (репозиторий packagecloud) · источник

    curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash && sudo apt-get install git-lfs

    Команды из INSTALLING.md проекта. Скрипт packagecloud от root добавляет источник пакетов /etc/apt/sources.list.d/github_git-lfs.list и ключ /etc/apt/keyrings/github_git-lfs-archive-keyring.gpg, ставит apt-transport-https (curl и gnupg, если их нет) и обновляет списки apt. Пакет сам включает Git LFS для всех пользователей через /etc/gitconfig: в прогоне клон с файлом из Git LFS скачался целиком без git lfs install у пользователя. Мы ставили так от root без sudo, с закреплённой версией git-lfs=3.8.0

  • Linux · готовый архив с GitHub · источник

    curl -LO https://github.com/git-lfs/git-lfs/releases/download/v3.8.0/git-lfs-linux-amd64-v3.8.0.tar.gz && tar -xzf git-lfs-linux-amd64-v3.8.0.tar.gz && mkdir -p ~/.local && ./git-lfs-3.8.0/install.sh --local

    Архив для x86-64 со страницы выпуска, сумма sha256 указана там же. Скрипт install.sh из архива с ключом --local кладёт программу в ~/.local/bin и запускает git lfs install для пользователя, sudo не нужен. Без ключа он ставит в /usr/local/bin, и тогда нужны права на запись туда. Папка ~/.local должна существовать заранее, а ~/.local/bin должна быть в PATH: настройки Git вызывают программу по имени git-lfs. Мы ставили так, сумму сверили

Как удалить

  • macOS, Homebrew: git lfs uninstall && brew uninstall git-lfs
  • Windows, Git for Windows: git lfs uninstall
  • Linux, apt (репозиторий packagecloud): git lfs uninstall && sudo apt-get purge git-lfs && sudo rm -f /etc/apt/sources.list.d/github_git-lfs.list /etc/apt/keyrings/github_git-lfs-archive-keyring.gpg && sudo apt-get update
  • Linux, готовый архив с GitHub: git lfs uninstall && rm -f ~/.local/bin/git-lfs

Что нужно для работы

  • Git (обязательно) - Git LFS работает как дополнение к Git. Пакет для Ubuntu требует Git 2.0.0 или новее, в прогоне стоял 2.43.0
  • Сервер репозитория с поддержкой Git LFS (в отдельных случаях) - только чтобы отправлять тяжёлые файлы на сервер. GitHub поддерживает Git LFS и считает место под эти файлы отдельно, в прогоне хватило репозитория на диске
  • Homebrew (в отдельных случаях) - только для установки на Mac через brew

Системы

  • macOS - ставится через Homebrew. По описанию выпуска 3.8.0 собран на Go 1.27 и требует macOS 13 Ventura или новее. На Mac мы не проверяли.
  • Windows - по README проекта Git LFS входит в Git for Windows. На Windows мы не проверяли.
  • Linux - мы проверяли на Ubuntu 24.04 x86-64 пакет из репозитория packagecloud и архив с GitHub. Собственный репозиторий Ubuntu 24.04 даёт старую версию 3.4.1.

Где запускать

Ставить нужно туда, где работает агент: на твой компьютер, сервер или в контейнер.

  • На компьютере - там, где лежит рабочая копия проекта с тяжёлыми файлами.
  • На сервере - работает в терминале без окон. В прогоне все команды шли без вопросов.
  • В контейнере - мы проверяли в контейнере Ubuntu 24.04 от root, установка из packagecloud заняла 22 секунды.

Сколько ресурсов нужно

Место на диске
Пакет из packagecloud весит 9 620 656 байт по списку пакетов репозитория и ставит /usr/bin/git-lfs размером 20 487 760 байт. Из архива GitHub программа заняла 13 947 040 байт в ~/.local/bin, сам архив весит 5 909 255 байт. Место под тяжёлые файлы считай отдельно: в прогоне видео и макет заняли в удалённом репозитории 29 360 128 байт.
Сеть
С репозиторием на диске программа обходится без сети: в прогоне git lfs track, git push в репозиторий на диске и git lfs pull не открыли ни одного соединения. Установка ходила к packagecloud.io и d3fo0g5hm7lbuv.cloudfront.net (Amazon CloudFront, туда packagecloud отдаёт списки и пакет), к archive.ubuntu.com и security.ubuntu.com, а apt-get update ещё к deb.nodesource.com, источнику Node.js в образе нашей песочницы. Архив скачивался с github.com и release-assets.githubusercontent.com, плюс DNS контейнера 127.0.0.11. Обмен файлами с настоящим сервером репозитория мы не проверяли. Доступ из России мы не проверяли.

Если репозиторий на GitHub: по документации GitHub на 16.10.2026 один файл в Git LFS может весить до 2 GB на тарифах Free и Pro, на тарифах Free, Pro и Free for organizations бесплатно входит 10 GiB хранения и 10 GiB скачивания, на Team и Enterprise Cloud по 250 GiB. Каждая отправка изменённого файла занимает место его полным размером.

Лицензия и платные замены

Лицензия MIT. Пользоваться можно бесплатно, и лично, и в работе компании. Кто распространяет копии, сохраняет текст лицензии. Часть кода взята из Go и идёт под лицензией Go в стиле BSD, её текст лежит в том же файле. Текст лицензии

Цена: Бесплатно. Программа бесплатная, лицензия MIT. Платить может понадобиться площадке, где лежит репозиторий, за место под тяжёлые файлы.

Платные замены

Платную замену мы не указываем: Git LFS бесплатный и работает с любым сервером репозитория, который его поддерживает. Деньги может взять сама площадка за место под файлы, условия GitHub - в «О чём помнить».

Бесплатные замены

  • git-annex - Тоже ведёт большие файлы через Git и хранит их содержимое отдельно от репозитория. По описанию на сайте проекта синхронизирует, копирует и архивирует данные с сетью и без неё. Лицензия AGPL-3.0 или новее, части кода под GPL и BSD.
  • DVC - Консольная программа для версий данных и моделей: по README проекта сами файлы лежат в облачном хранилище, а сведения о версиях в репозитории Git, лицензия Apache-2.0.
  • rclone - Копирует папку с тяжёлыми файлами в облако или на сервер. С историей Git эти копии никак не связаны.

О чём помнить

  • Безопасность. Агент запускает git lfs в терминале сам (exec). Программа читает файлы рабочей папки, когда считает их суммы и отправляет на сервер (read). Пишет копии файлов в .git/lfs, файлы в рабочую папку при скачивании, .gitattributes, хуки в .git/hooks и настройки в ~/.gitconfig, а пакет apt - в /etc/gitconfig (write). Необратимые действия (acts) тоже есть. После migrate import историю на сервер отправляют только с принудительной перезаписью веток, prune стирает старые локальные копии файлов, а fsck переносит испорченные копии в .git/lfs/bad. Отправка через git push занимает место владельца репозитория на сервере. Скрипт packagecloud работает от root и добавляет в систему источник пакетов и ключ.
  • git lfs install дописывает в ~/.gitconfig раздел filter "lfs", а внутри репозитория по справке ставит хук pre-push. В прогоне после git lfs track в .git/hooks лежали хуки pre-push, post-checkout, post-commit и post-merge. Пакет apt при установке записывает тот же фильтр в /etc/gitconfig для всех пользователей (git lfs install --skip-repo --system), хуков в репозитории он не ставит. При удалении пакета системная настройка уходит, а настройку в ~/.gitconfig снимает git lfs uninstall. Так было в прогоне.
  • git lfs track не трогает файлы, которые уже попали в историю: они так и остаются в Git. Перенести их может git lfs migrate import, но она меняет хэши коммитов. По справке перед ней сохраняют всю работу, а после проверяют историю. Место освобождается после очистки reflog и git gc: в прогоне архив 5 242 880 байт ушёл из Git, и упакованная история заняла 1.99 KiB.
  • Сайт на GitHub Pages файлы из Git LFS не покажет: по документации GitHub Git LFS с Pages не работает.
  • По документации GitHub, если бесплатное место кончилось и способ оплаты не задан, клоны получают только указатели и новые файлы не отправляются. Если без способа оплаты кончился месячный объём скачивания, Git LFS для учётной записи отключается до следующего месяца.
  • На Windows Git LFS по README проекта входит в Git for Windows. git lfs uninstall снимает только настройки Git LFS, сама программа остаётся на диске. На Windows мы не проверяли.
  • Ubuntu 24.04 в своём репозитории даёт Git LFS 3.4.1, свежая версия ставится из репозитория packagecloud. После apt-get purge файл источника /etc/apt/sources.list.d/github_git-lfs.list остаётся, его удаляют отдельно, как в строке удаления.

Частые проблемы

Error: Insufficient permissions to install in /root/.local. Try running with sudo or choose a different prefix.

install.sh из архива запущен с --local, а папки ~/.local ещё нет. Скрипт проверяет право записи до того, как создаёт папки. Код выхода 1. Создай папку командой mkdir -p ~/.local и запусти install.sh --local снова. В прогоне после этого установка прошла.

warning: some filter configuration was not removed (found filter.lfs.smudge)

git lfs uninstall снял настройку пользователя в ~/.gitconfig, а пакет apt записал такую же в /etc/gitconfig для всех пользователей. Системную настройку убирает удаление пакета: sudo apt-get purge git-lfs. В прогоне после него в /etc/gitconfig раздела filter "lfs" не осталось.

Видео или макет в папке весит 130 с небольшим байт и не открывается, внутри текст version https://git-lfs.github.com/spec/v1

Это указатель Git LFS: файл не скачан. Так бывает после клона с GIT_LFS_SKIP_SMUDGE=1, в прогоне файл весил 133 байта. Скачай файлы командой git lfs pull, нужные по шаблону: git lfs pull --include "*.mp4".

objects: corruptObject: media/intro.mp4 (...) is corrupt

Так git lfs fsck сообщает, что копия файла в .git/lfs/objects не совпала с суммой sha256. Код выхода 1, испорченную копию программа перенесла в .git/lfs/bad. Возьми файл из целой копии репозитория: с сервера или из другого клона.

Not in a Git repository.

git lfs pull запустили вне репозитория. Код выхода 128. Перейди в папку репозитория и повтори git lfs pull.

Проверка

✓ Проверено 16.10.2026: Ubuntu 24.04 (x86_64) в одноразовом контейнере Docker на сервере, от root, Git 2.43.0 из образа: git-lfs 3.8.0 из репозитория packagecloud через apt и архив 3.8.0 с GitHub.

Когда
16.10.2026
Среда
Ubuntu 24.04 (x86_64) в одноразовом контейнере Docker на сервере, от root, Git 2.43.0 из образа: git-lfs 3.8.0 из репозитория packagecloud через apt и архив 3.8.0 с GitHub
Объём
Установили и прогнали задачу на тестовых данных
Что именно сделали
  1. Одноразовый контейнер Ubuntu 24.04 без данных и ключей. Скрипт packagecloud из INSTALLING.md добавил источник пакетов, apt-get install git-lfs=3.8.0 поставил пакет, оба шага заняли 22 секунды. git lfs version вывел «git-lfs/3.8.0», git lfs install записал раздел filter "lfs" в ~/.gitconfig.
  2. Скрипт сам создал тестовую папку сайта: видео 20 971 520 байт и макет PSD 8 388 608 байт из случайных байт, плюс index.html. Команда git lfs track "*.mp4" "*.psd" записала шаблоны в .gitattributes, после коммита git lfs ls-files -s показал оба файла, а git cat-file -p HEAD:media/intro.mp4 - указатель 133 байта с суммой sha256 и размером 20971520.
  3. Команда git push -q origin main отправила всё в голый репозиторий на диске (file://) за 1 374 мс. В нём объекты Git заняли 790 байт, а файлы Git LFS - 29 360 128 байт.
  4. Клон с GIT_LFS_SKIP_SMUDGE=1 получил вместо видео указатель 133 байта. git lfs pull --include "*.mp4" скачал только видео, макет остался указателем, git lfs pull скачал остальное. Суммы sha256 обоих файлов совпали с исходными, и в обычном клоне тоже.
  5. В отдельном репозитории архив 5 242 880 байт уже лежал в истории из двух коммитов. git lfs migrate import --include="*.zip" --everything переписал оба коммита, на месте архива стал указатель, после очистки reflog и git gc упакованная история заняла 1.99 KiB.
  6. git lfs fsck на целом хранилище дал код 0. Испортили одну копию в .git/lfs/objects: код 1, «corruptObject», копия перенесена в .git/lfs/bad. git lfs pull вне репозитория дал код 128 и «Not in a Git repository.».
  7. Удаление: git lfs uninstall снял раздел из ~/.gitconfig, apt-get purge git-lfs убрал программу, источник packagecloud и ключ удалили руками. Во втором прогоне проверили, что пакет пишет filter "lfs" в /etc/gitconfig, клон с файлом LFS скачался без git lfs install у пользователя, а purge убрал эту настройку, файл источника остался.
  8. Архив git-lfs-linux-amd64-v3.8.0.tar.gz с GitHub: сумма sha256 совпала с указанной на странице выпуска. install.sh --local без папки ~/.local дал код 1, после mkdir -p ~/.local поставил программу в ~/.local/bin и вывел версию 3.8.0. Все проверки скрипт сделал сам и только после них напечатал TASK_OK.
ДатаВерсияОбъёмГдеИтог
16.10.20263.8.0задачаконтейнер, Linuxполучилось

«Проверено» ставим, только когда сами поставили программу и прогнали её на задаче. Сверка ссылок и вывод версии так не называются.

Похожие программы

Программу делают её авторы. Мы сверяем официальные источники и описываем, что ей нужно, но код остаётся чужим. Перед установкой посмотри план агента: что он поставит и что поменяет в системе.