Как клонировать репозиторий, содержащий файлы Git LFS?

В моей системе Ubuntu я установил Git LFS, а также Git и клонировал репозиторий, некоторые файлы которого управляются Git LFS. Но эти файлы не загружались, кроме файла маркера. (Я не понимал, что это не весь файл, пока не проверил размер файла, потому что они отображались в моей файловой системе с правильными именами и в правильных местах.)

Из этого ответа я вижу, что git lfs clone устарело, и просто git clone должно работать. Но когда я попробовал это, я запутался. Я привык просто запускать git clone https://foobar.git и позволять ему устанавливать каталог. Но Git LFS не будет работать, если он не будет инициализирован с помощью git lfs install в каждом каталоге, где он используется. (Вот почему это не сработало в первый раз, по крайней мере, теперь я это знаю.)

Итак, я настроил каталог, запустил в нем git init и git lfs install, а затем запустил git clone https://foobar.git. Что создаст каталог для репо, вложенный в каталог, который я создал, не так ли? Это кажется неправильным как-то.

Клонирование этого репозитория займет несколько часов, поэтому я хотел бы быть уверенным, что делаю это правильно. Глядя на документацию на GitHub, кажется, что приведенный выше набор команды верны - если вы прочитали все это. Биты информации разделены тысячей слов или около того. Это способ сделать это?


person kim holder wants Monica back    schedule 23.05.2019    source источник


Ответы (1)


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

Если вы еще не в репозитории, вы, вероятно, захотите запустить git lfs install --skip-repo и позволить ему установить команды фильтра в ваш ~/.gitconfig. Если вы управляете этим файлом самостоятельно, скопируйте строки, которые он добавляет, в файл, которым вы управляете. Затем перейдите в каталог, не контролируемый Git, запустите git lfs env и убедитесь, что последние несколько строк выглядят так:

git config filter.lfs.process = "git-lfs filter-process"
git config filter.lfs.smudge = "git-lfs smudge -- %f"
git config filter.lfs.clean = "git-lfs clean -- %f"

Это покажет вам, что ваша конфигурация настроена правильно. После того, как вы это настроите, просто клонируйте репозиторий, и, если он настроен с правильными записями в файле .gitattributes, Git автоматически извлечет необходимые файлы Git LFS, и когда Git LFS будет вызван, он установит необходимые перехватчики. .

В Debian пакет Git LFS устанавливает команды фильтра по умолчанию, поэтому, вероятно, он делает то же самое в Ubuntu. Вы можете проверить записи в /etc/gitconfig, и если они присутствуют, вам вообще ничего не нужно делать; все должно просто работать, и git lfs env автоматически покажет вам то, что нужно, без какой-либо настройки.

person bk2204    schedule 23.05.2019