2016-02-23 4 views
18

Github имеет limit на большой большой файл. Поэтому, если вы хотите нажать большой файл на свое репо, вы должны использовать Git LFS.В чем преимущество git lfs?

Я знаю, что это плохая идея добавить двоичный файл в git repo. Но если я использую gitlab на моем сервере, и нет предела размера файла в репо, и мне все равно, что размер репо будет очень большим на моем сервере. В этом состоянии, в чем преимущество git lfs? git clone или git checkout будет быстрее?

+0

Вы сравнили скорость соединения? – SOFe

+0

Нет. Я пытаюсь понять это в принципе. – Sanster

+1

С git-lfs клон будет намного быстрее. Оформить заказ немного дольше, время для загрузки файлов, помещенных в lfs. Но если вам действительно нужно проверить некоторые двоичные файлы, LFS это способ сделать. – Philippe

ответ

35

Одной спецификой Git (и других распределенных систем) по сравнению с централизованными системами является то, что каждый репозиторий содержит всю историю проекта. Предположим, вы создали файл размером 100 Мб, измените его 100 раз таким образом, чтобы он плохо сжимался. В итоге вы получите репозиторий на 10 Гб. Это означает, что каждый клон будет загружать 10 Гб данных, есть 10 ГБ дискового пространства на каждой машине, на которой вы клонируете. Что еще более неприятно: вам все равно придется загружать эти 10 Гб данных, даже если вы делаете большие файлы.

Вставка больших файлов в отдельной системе, такой как git-lfs, позволяет хранить только указатели на каждую версию файла в репозитории, поэтому каждый клон будет загружать только крошечный фрагмент данных для каждой ревизии. В выписке будет загружена только версия, которую вы используете, т. Е. 100 Мб в приведенном выше примере. В результате вы используете дисковое пространство на сервере, но сохраняете большую пропускную способность и дисковое пространство на клиенте.

В дополнение к этому алгоритм, используемый git gc (внутренний, git repack), не всегда хорошо работает с большими файлами. Последние версии Git достигли прогресса в этой области, и он должен работать достаточно хорошо, но использование большого репозитория с большими файлами в нем может в конечном итоге вызвать у вас проблемы (например, не иметь достаточного количества оперативной памяти для переупаковки вашего репозитория).