Git LFS
GitHub и участники проекта Git LFS · лицензия MIT
Хранит видео, макеты и архивы проекта рядом с Git так, чтобы история не раздувалась. В репозитории лежат короткие указатели, а сами файлы агент скачивает, когда они нужны.
✓ Проверено 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
Установить агентом
Установи программу «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
- Объём
- Установили и прогнали задачу на тестовых данных
- Что именно сделали
- Одноразовый контейнер 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.
- Скрипт сам создал тестовую папку сайта: видео 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.
- Команда git push -q origin main отправила всё в голый репозиторий на диске (file://) за 1 374 мс. В нём объекты Git заняли 790 байт, а файлы Git LFS - 29 360 128 байт.
- Клон с GIT_LFS_SKIP_SMUDGE=1 получил вместо видео указатель 133 байта. git lfs pull --include "*.mp4" скачал только видео, макет остался указателем, git lfs pull скачал остальное. Суммы sha256 обоих файлов совпали с исходными, и в обычном клоне тоже.
- В отдельном репозитории архив 5 242 880 байт уже лежал в истории из двух коммитов. git lfs migrate import --include="*.zip" --everything переписал оба коммита, на месте архива стал указатель, после очистки reflog и git gc упакованная история заняла 1.99 KiB.
- git lfs fsck на целом хранилище дал код 0. Испортили одну копию в .git/lfs/objects: код 1, «corruptObject», копия перенесена в .git/lfs/bad. git lfs pull вне репозитория дал код 128 и «Not in a Git repository.».
- Удаление: git lfs uninstall снял раздел из ~/.gitconfig, apt-get purge git-lfs убрал программу, источник packagecloud и ключ удалили руками. Во втором прогоне проверили, что пакет пишет filter "lfs" в /etc/gitconfig, клон с файлом LFS скачался без git lfs install у пользователя, а purge убрал эту настройку, файл источника остался.
- Архив 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.2026 | 3.8.0 | задача | контейнер, Linux | получилось |
«Проверено» ставим, только когда сами поставили программу и прогнали её на задаче. Сверка ссылок и вывод версии так не называются.
Похожие программы
- GitТочки сохранения для проекта: агент сохраняет состояние перед большой правкой, и любую поломку можно откатить. Ещё через Git проект выкладывают на GitHub.
- rcloneКопирует проект, базу и материалы в облако: Яндекс Диск, хранилища S3, WebDAV. Агенту нужна, чтобы сделать резервную копию, сверить её с оригиналом и не потерять файлы.
Программу делают её авторы. Мы сверяем официальные источники и описываем, что ей нужно, но код остаётся чужим. Перед установкой посмотри план агента: что он поставит и что поменяет в системе.