Репозиторий еще большой после миграции на LFS - PullRequest
0 голосов
/ 03 ноября 2018

Я работаю с Unreal Engine 4, и он сериализует все свои файлы активов в виде двоичных файлов. В настоящее время размер проекта составляет менее 10 МБ, а папка .git - почти 700 МБ. Я LFS отслеживал все файлы активов и сделал lfs migrate в репо, но репо все еще велико. GitHub говорит, что файлы находятся в LFS, но я не видел, чтобы мой индикатор использования хранилища LFS повышался после нажатия переписанной истории.

Я не уверен, что так работает LFS, но, насколько я понимаю, Git будет хранить указатель на файл в LFS и загружать только версию файла из коммита, в котором находится ваш HEAD.

Я довольно потерянный здесь. Думаю, стоит упомянуть, что я новичок в git, поэтому, пожалуйста, будьте осторожны со мной.

Заранее спасибо.

EDIT: Я запустил git lfs install --skip-smudge, а затем клонировал репо, это сделало папку репо намного меньше, поскольку при клонировании файлы LFS не загружались. Проблема в том, что теперь у меня есть только файлы указателя, а выполнение git lfs pull не может проверить все файлы. Сообщение об ошибке Could not check out "<file-name>".

1 Ответ

0 голосов
/ 05 ноября 2018

Git LFS будет хранить версии файлов в последних коммитах. Здесь «недавний» означает значение lfs.fetchrecentrefsdays свойства конфигурации. Таким образом, LFS будет извлекать все версии, которые имеют 7 дней или более новые (это значение по умолчанию, но вы можете изменить его).

Чтобы удалить все старые файлы, вам необходимо git lfs prune. В результате удаления всех версий файлов, которые старше lfs.fetchrecentrefsdays + lfs.pruneoffsetdays. lfs.pruneoffsetdays по умолчанию равно 3, а lfs.fetchrecentrefsdays по умолчанию равно 7, поэтому при выполнении удаления все версии старше 10 дней будут удалены.

Подробнее здесь

РЕДАКТИРОВАТЬ: Что касается ошибки «Не удалось оформить файл», которую я получаю, чистая установка Git добилась цели.

...