Сегодня, загружая код с помощью CodeUp, я добавил в проект файл размером более 300 МБ. При выполнении операции отправки система выдала мне сообщение: «Ошибка отправки. Размер следующих файлов превышает системный предел в 200 МБ для одного файла. Используйте Git-LFS для управления большими файлами». Итак, я начал изучать Git LFS. Для проектов, которым необходимо обрабатывать большие двоичные файлы, производительность Git может стать узким местом. Чтобы решить эту проблему, Git представил Git LFS (Large File Storage) — расширение, специально разработанное для управления большими файлами. В этой статье мы подробно рассмотрим, как работает Git LFS, как его использовать и какие преимущества он дает вашим проектам.
git-lfs.jpg
Адрес официального сайта Git LFS: https://git-lfs.com/
Git — популярный в отрасли распределенный инструмент контроля версий. Локальное и удаленное хранилище также сохраняют полный объем файлов и историю изменений, что делает совместную работу над кодом простой и эффективной. Но из-за этого у Git также возникают некоторые проблемы с контролем версий больших файлов (например, изображений, видео или других бинарных файлов). Есть два основных момента:
Git LFS — это расширение Git, предназначенное для более эффективной обработки больших файлов. Он уменьшает размер репозитория за счет хранения больших файлов в отдельном месте, оставляя в репозитории Git только ссылки и метаданные. Это позволяет быстрее клонировать, отправлять и извлекать репозитории Git, одновременно эффективно обрабатывая большие медиафайлы, двоичные файлы и многое другое.
В настоящее время lfs интегрирован в Git для Windows. Вы можете напрямую загрузить и использовать последнюю версию Windows Git.
Загрузите двоичный пакет напрямую: https://github.com/git-lfs/git-lfs/releases.
Просто запустите распакованный скрипт ./install.sh. Этот скрипт выполнит две вещи:
существовать$PATHсередина Установите Git Бинарный исполняемый файл для LFS
осуществлятьgit lfs install
Заказ,Пусть текущая среда поддерживает глобальную конфигурацию LFS.
После успешной установки выполните следующую команду, чтобы хранилище поддерживало LFS.
git lfs install
Отображение выполнения
Updated Git hooks.
Git LFS initialized.
Использовать Git LFS для отслеживания больших файлов,вам нужно использоватьgit lfs track
Заказ。Например:
git lfs track "*.zip"
Это говорит Git LFS отслеживать все .zip-архивы. Вы можете использовать подстановочные знаки или указать конкретные имена файлов.
осуществлятьgit lfs track
(без каких-либо параметров),Вы можете просмотреть отслеживаемые в данный момент файлы файлов Git LFS:
git lfs track
Отобразит текущий отслеживаемый тип или файл файла Git LFS.
Listing tracked patterns
*.bigfile (.gitattributes)
*.exe (.gitattributes)
*.zip (.gitattributes)
Listing excluded patterns
Команда track фактически изменяет файл .gitattributes в хранилище. Мы выполняем следующую команду, чтобы добавить файл add в промежуточную область.
git add .gitattributes
Чтобы файл отслеживания, который мы только что настроили, вступил в силу, необходимо отправить файл .gitattributes:
git commit -m "Добавить.zip lfsКонфигурация"
Вы можете отменить отслеживание определенных файлов и очистить их из кеша:
git lfs untrack "*.zip"
git rm --cached "*.zip"
Если вы хотите добавить эти файлы обратно в обычное отслеживание Git, вы можете сделать следующее:
git lfs track "*.zip"
git commit -m "Перезагрузить.zip lfsКонфигурация"
Как только вы настроите Git LFS, вы можете использовать GitОтправить как обычно и нажмитедокумент。Git LFS автоматически обрабатывает загрузку и скачивание больших файлов.
git add .
git commit -m "Add large files"
git push origin master
При получении изменений или переключении веток Git LFS автоматически загружает необходимые большие файлы.
git pull origin master
git checkout other-branch
С помощью команды git lfs lock вы можете заблокировать большие файлы, чтобы другие не могли их изменить. Разблокировка файла позволяет другим пользователям продолжить его изменение.
git lfs lock some_large_file.jpg
git lfs unlock some_large_file.jpg
Информацию о LFS можно просмотреть с помощью следующей команды:
git lfs ls-files
git lfs status
Эти команды предоставляют подробную информацию о файле трассировки, включая его размер и текущее состояние.
Вот как это работает:
git.png
В распространенных сценариях, будь то небольшой текстовый файл кода или относительно большой файл изображения, когда соответствующие изменения передаются из локального хранилища в удаленное, все связанные файловые ресурсы будут полностью сохранены на сервере git. Что касается примера на картинке, то если файлов изображений становится все больше и частота изменений становится все больше и больше, размер хранилища будет быстро расширяться.
gitlfs.png
Как показано на рисунке, мы можем использовать возможности хранения Git LFS для изображений jpg и загружать их в службу хранения больших файлов во время процесса отправки. В то же время файл указателя, соответствующий большому файлу, будет отправлен в удаленный репозиторий Git вместе с другими обычными файлами кода.
gitflsflow.png
Git LFS приносит значительные преимущества проектам в следующих областях:
Поскольку Git LFS должен обрабатывать только ссылки на файлы, он ускоряет операции клонирования, отправки и извлечения репозиториев Git.
Для больших медиафайлов, двоичных файлов и т. д. Git LFS предоставляет эффективный метод контроля версий, уменьшающий размер хранилища.
Возможность блокировки файлов позволяет командам лучше работать вместе и предотвращать конфликты.
В целом, Git LFS — мощный инструмент, особенно подходящий для проектов, которым необходимо обрабатывать большие файлы. Благодаря более эффективному управлению файлами он обеспечивает более плавный контроль версий для команд и гарантирует оптимизацию общей производительности проекта.
Внедрение Git LFS в ваш проект может потребовать некоторой дополнительной настройки и изучения, но как только вы освоитесь с его базовым использованием, вы сможете лучше использовать преимущества Git LFS и повысить эффективность процесса разработки.
Примечание. Некоторые изображения и текст в этой статье цитируются из документов Alibaba Cloud;
Исходная ссылка https://help.aliyun.com/document_detail/206889.html?spm=a2c4g.206888.0.0.513353e40LNWBM