Как загрузить большой файл на github

Обновлено: 24.11.2024

Управление большими файлами, такими как аудио, видео и графические файлы, всегда было одним из недостатков Git. Общая рекомендация — не использовать репозиторий Git размером более 1 ГБ для сохранения производительности.

Файлы, отслеживаемые Git LFS, отображают значок, указывающий, хранится ли файл как большой двоичный объект или как указатель LFS.

Как это работает

Конфигурация сервера GitLab

Документация для администраторов экземпляров GitLab находится в документе по администрированию LFS.

Требования

  • Git LFS поддерживается в GitLab, начиная с версии 8.2.
  • Git LFS должен быть включен в настройках проекта.
  • Необходимо установить клиент Git LFS версии 1.0.1 и выше

Известные ограничения

Использование Git LFS

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

После того как вы пометите расширение файла для отслеживания как объект LFS, вы сможете использовать Git как обычно, не повторяя команду для отслеживания файла с тем же расширением:

Убедитесь, что Git отслеживает .gitattributes. В противном случае Git LFS не будет работать должным образом для людей, клонирующих проект:

Если вы уже клонировали репозиторий и хотите получить последний объект LFS, который находится в удаленном репозитории, например, для ветки из источника:

Убедитесь, что ваши файлы не указаны в .gitignore , иначе Git проигнорирует их и не отправит в удаленный репозиторий.

Перенос существующего репозитория в Git LFS

Удаление объектов из LFS

  1. Используйте git filter-repo для удаления объектов из репозитория.
  2. Удалите соответствующие строки LFS для объектов, которые вы удалили из файла .gitattributes, и зафиксируйте эти изменения.

Блокировка файлов

См. документацию по блокировке файлов.

Объекты LFS в архивах проектов

До GitLab 13.5 загрузка исходного кода проекта включала указатели Git LFS вместо реальных объектов. Например, указатели LFS выглядят следующим образом:

В GitLab версии 13.5 и более поздних эти указатели преобразуются в загруженный объект LFS.

Технические подробности о том, как это работает, можно найти в документации по разработке для LFS.

Устранение неполадок

Обнаружено n файлов, которые должны были быть указателями, но не были

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

Перенесите файл в LFS:

Отправить обратно в репозиторий:

Необязательно. Очистите папку .git:

ошибка: репозиторий или объект не найден

  • У вас нет прав доступа к определенному объекту LFS
  • Проекту не разрешен доступ к объекту LFS
  • Локальный репозиторий Git использует устаревший API LFS

Неверный статус для : 501

Git LFS регистрирует сбои в файле журнала. Чтобы просмотреть этот файл журнала, находясь в каталоге проекта:

Git LFS не включен в настройках проекта. Проверьте настройки своего проекта и включите Git LFS.

Поддержка Git LFS не включена на сервере GitLab. Узнайте у администратора GitLab, почему Git LFS не включен на сервере. Инструкции по включению поддержки LFS см. в документации по администрированию LFS.

getsockopt: в соединении отказано

Чтобы этого не произошло, задайте URL-адрес LFS в конфигурации проекта Git:

При отправке объекта всегда требуются учетные данные

По умолчанию Git поддерживает запоминание учетных данных для каждого используемого вами репозитория. Это описано на справочных страницах учетных данных Git.

Например, вы можете попросить Git запомнить пароль на период времени, в течение которого вы собираетесь отправлять объекты:

Это запоминает учетные данные на час, после чего операции Git требуют повторной аутентификации.

Если вы используете OS X, вы можете использовать osxkeychain для хранения и шифрования своих учетных данных. Для Windows вы можете использовать wincred или Git Credential Manager от Microsoft для Windows.

Дополнительную информацию о различных методах хранения учетных данных пользователя можно найти в документации Git Credential Storage.

Объекты LFS отсутствуют при отправке

GitLab проверяет файлы на обнаружение указателей LFS при отправке. Если обнаружены указатели LFS, GitLab пытается убедиться, что эти файлы уже существуют в LFS на GitLab.

Убедитесь, что LFS установлена ​​локально, и рассмотрите возможность отправки вручную с помощью git lfs push --all .

Если вы храните файлы LFS за пределами GitLab, вы можете отключить LFS в проекте, установив lfs_enabled: false в API проектов.

Внешнее размещение объектов LFS

Вы можете сделать это, если используете такое устройство, как Sonatype Nexus, для хранения данных LFS. Если вы решите использовать внешнее хранилище LFS, GitLab не сможет проверять объекты LFS. Затем отправка завершается ошибкой, если у вас включена поддержка GitLab LFS.

Чтобы предотвратить сбой при отправке, поддержку LFS можно отключить в настройках проекта, что также отключит добавление ценности GitLab LFS (проверка объектов LFS, интеграция пользовательского интерфейса для LFS).

Помощь и обратная связь

Редактируйте эту страницу, чтобы исправить ошибку или добавить улучшение в мерж-реквест.
Создайте задачу, чтобы предложить улучшение этой страницы.
Показывать и публиковать комментарии, чтобы просматривать и оставлять отзывы об этой странице.

Товар

Создайте проблему, если вам что-то не нравится в этой функции.
Предложите функциональность, отправив запрос функции.
Присоединяйтесь к программе First Look, чтобы помочь создавать новые функции.

Доступность функций и пробные версии продуктов

Просмотрите цены, чтобы увидеть все уровни и функции GitLab или обновиться.
Попробуйте GitLab бесплатно с доступом ко всем функциям на 30 дней.

Получить помощь

Если вы не нашли то, что искали, выполните поиск в документации.

Если вам нужна помощь с чем-то конкретным и вам нужна поддержка сообщества, опубликуйте сообщение на форуме GitLab.

При возникновении проблем с настройкой или использованием этой функции (в зависимости от вашей подписки на GitLab).

Если размер файла превышает 25 МБ, его нельзя загрузить с помощью пользовательского интерфейса github. Вы должны загрузить его с помощью командной строки. Это так же просто, как git push, как и любой другой файл.

Как загрузить файлы размером более 100 МБ, используя хранилище больших файлов github

Чтобы загрузить файлы размером более 100 МБ на github, вам потребуется использовать систему хранения больших файлов github (Github LFS).

ВНИМАНИЕ: вы не можете использовать github LFS с «разветвленным репо». Git отклонит фиксацию, когда вы попытаетесь отправить ее на github. Git LFS должен быть выполнен в вашем личном репозитории.

Как использовать хранилище больших файлов GIT (LFS) для загрузки файлов размером более 100 МБ

Как установить git lfs на Windows и/или Mac

Поместите git lfs на локальный компьютер.

Для Mac — загрузите git lfs для mac с помощью этой команды brew install git-lfs

Свяжите git lfs со своей учетной записью github..

Шаг 2. Для Windows. Найдите только что загруженный файл git lfs и запустите программу.
После установки программы git lfs перейдите в командную строку и запустите git lfs install< /p>

ПРИМЕЧАНИЕ. Приведенную выше команду нужно выполнить только ОДИН РАЗ для каждой учетной записи пользователя. Этот процесс устанавливает git для вашей учетной записи github.

Для Mac — перейдите к шагу 3

Отслеживайте файлы, которые вы хотите добавить в git lfs

Шаг 3. Для Mac и Windows. В командной строке введите git lfs track "*.csv"

Это в основном отслеживает все файлы, оканчивающиеся на «.csv». В качестве альтернативы вы можете добавить что-то вроде git lfs track "*.mp4". В основном, большие файлы размером более 100 МБ, которые вы хотите отслеживать с помощью git lfs, - это то, что вы добавите сюда.

Вместо отслеживания всех файлов csv или mp4 вы также можете указать отдельный файл, который хотите отслеживать. например, вы можете сделать git lfs track "file.wav"

Примечание. Вам необходимо выполнить "git track" для каждого репозитория, где вы хотите использовать git LFS для управления большими файлами. Вы по-прежнему можете использовать git LFS для отслеживания файлов размером менее 100 МБ

Шаг 4. Для mac и windows: убедитесь, что вы отслеживаете атрибуты git, введя git add .gitattributes

Шаг 5. Продолжайте использовать git, как обычно. Просто git add, commit, push как обычно. например

Каков лимит хранилища больших файлов Github (LFS)

ОГРАНИЧЕНИЯ ХРАНИЛИЩА GIT LFS: Git lfs можно использовать бесплатно, но у этой свободы есть ограничения. Если вы хотите использовать git lfs для хранения, вы можете загрузить до 1 ГБ вещей с помощью git lfs. И у вас есть 1 ГБ пропускной способности.

Если вам нужно больше места для хранения или пропускной способности, вы должны платить GitHub 5 долларов США в месяц. За 5 долларов США в месяц вы получаете 50 ГБ в хранилище и 50 ГБ трафика в месяц.

Дополнительные ресурсы по git LFS.

Надеюсь, вы научились загружать файлы размером более 100 МБ с помощью GIT LFS. Дайте мне знать, что вы думаете в разделе комментариев ниже.

Недавно я работал над созданием собственной игры в Unity. Да, это частично готовая игра, которую вы можете настроить, но тем не менее это игра. Как и многие другие мои живые проекты по кодированию, я хотел хранить весь код из этой игры на GitHub.

Одна из вещей, о которых я быстро узнал, — это проблемы, связанные с использованием git для разработки игр. Вот три основные проблемы, с которыми я столкнулся:

  • длинные имена файлов
  • много файлов (например, 10 000)
  • некоторые большие файлы (более 100 МБ)

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

К сожалению, мы мало что можем сделать с объемом самих файлов.Но мы можем кое-что сделать с большими файлами.

Загрузка файлов на GitHub

Некоторые из вас, вероятно, пытались вручную загрузить файлы на GitHub. Если вы перейдете в любой репозиторий и нажмете «Добавить файл», у вас будет возможность создать новый файл или загрузить файлы. Если вы выберете «Загрузить файлы», вы сможете выбрать файлы для загрузки или перетаскивания. Однако функциональность этой функции ограничена.

Вы можете добавлять только файлы, но не папки, и вы не можете загружать файлы размером более 25 МБ. Если вы хотите выполнить одно из этих действий, лучше всего загружать файлы/папки с помощью командной строки или GitHub Desktop.

Но даже у этого есть свои пределы. Хотя ограничений на количество файлов, которые вы можете загружать, нет (или я их еще не обнаружил), существует ограничение на размер файлов. Размер одного файла не может превышать 100 МБ. Итак, что вы делаете, если ваш файл превышает лимит? Иногда есть файлы, которые вы определенно хотите добавить в свой репозиторий.

Хранение больших файлов на GitHub

Если вы хотите сохранить большой файл на GitHub, вы можете это сделать. Вам нужно будет использовать что-то под названием Git Large File Storage (LFS). Установите Git LFS на свой компьютер и приступайте к работе.

Установив Git LFS, проверьте, работает ли он:

Это также предоставит вам список полезных команд. Затем узнайте, где находится файл, который вы хотите сохранить, на вашем локальном компьютере. Перейдите в эту папку:

Далее используйте команду track, чтобы добавить большой файл. Например, если ваш файл называется "Devtopost.mp4", вы можете отследить его по:

git lfs трек "Devtopost.mp4"

Если, например, у вас есть много больших файлов *.mp4, вы можете отслеживать все файлы одновременно:

дорожка git lfs "*.mp4"

Таким образом, вам не нужно иметь все отдельные файлы.

Далее мы хотим убедиться, что все эти файлы хранятся в git:

git добавить .gitattributes

В этом вышеприведенном файле хранится вся информация о каждом из больших файлов. Наконец, вы можете добавлять, фиксировать и отправлять как обычно:

git добавить . Это добавляет все зафиксированные файлы. или используйте git add Devtopost.mp4, чтобы добавить только один измененный файл.

git commit -m "добавить эти массивные файлы"

Теперь ваши большие файлы должны храниться на GitHub. Помните, что существует ограничение на количество файлов, которые вы можете хранить на GitHub. Это будет зависеть от вашего плана.

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

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

Размер отдельных файлов, добавляемых через IDE браузера, ограничен 25 МБ, а файлов, добавляемых через командную строку, — 100 МБ. Кроме того, GitHub начнет блокировать пуши. С другой стороны, размер отдельных репозиториев ограничен 5 ГБ.

Хотя большинство команд, скорее всего, не столкнется с этими ограничениями, тем, кто все же, придется искать решение. Например, если вы просто загружаете код, вам не нужно об этом беспокоиться. Однако если в вашем проекте используются какие-либо данные, например, проекты по науке о данных или анализ машинного обучения, то, скорее всего, так и будет.I

В этой статье мы рассмотрим ситуации, которые могут привести к увеличению размера репозиториев, и рассмотрим возможные обходные пути, например Git Large File Storage (LFS).

Корень больших репозиториев

Давайте рассмотрим несколько распространенных действий, которые могут привести к созданию особенно больших файлов или репозиториев Git.

Резервное копирование дампов базы данных

Дампы базы данных обычно форматируются как большие файлы SQL, содержащие основную часть выходных данных, которые можно использовать для репликации или резервного копирования базы данных. Разработчики загружают дампы базы данных вместе с кодом своего проекта в Git и GitHub по двум причинам:

  • Для синхронизации состояния данных и кода.
  • Чтобы другие разработчики, клонирующие проект, могли легко копировать данные на тот момент времени.

Этого делать не рекомендуется, так как это может вызвать много проблем. GitHub рекомендует вместо этого использовать инструменты хранения, такие как Dropbox.

Внешние зависимости

Разработчики обычно используют менеджеры пакетов, такие как Bundler, Node Package Manager (npm) или Maven, для управления внешними зависимостями проекта или пакетами.

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

Другие большие файлы

Помимо дампов базы данных и внешних зависимостей, существуют и другие типы файлов, которые могут увеличить размер файла репозитория:

  • Большие мультимедийные ресурсы. Избегайте хранения больших мультимедийных ресурсов в Git. Рассмотрите возможность использования Git LFS (подробнее см. ниже) или Git Annex, которые позволяют создавать версии ваших медиаресурсов в Git, фактически сохраняя их за пределами репозитория.
  • Файловые архивы или сжатые файлы. Различные версии таких файлов плохо взаимодействуют друг с другом, поэтому Git не может эффективно их хранить. Лучше хранить отдельные файлы в своем репозитории или хранить архив в другом месте.
  • Созданные файлы (например, выходные данные компилятора или файлы JAR): при необходимости их лучше создавать заново или хранить в реестре пакетов или даже на файловом сервере.
  • Файлы журналов и двоичные файлы. Распространение скомпилированного кода и предварительно упакованных выпусков журналов или двоичных файлов в вашем репозитории может быстро его раздуть.

Работа с большими репозиториями

Представьте, что вы запускаете команду git push и после долгого ожидания получаете сообщение об ошибке: GH001 Обнаружены большие файлы . Это происходит, когда файл или файлы в вашем репозитории Git превышают допустимую емкость.

В предыдущем разделе обсуждались ситуации, которые могут привести к раздуванию файлов Git. Теперь давайте рассмотрим возможные решения.

Решение 1. Удалите большие файлы из истории репозитория

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

История репозитория — это запись состояния файлов и папок в репозитории в разное время, когда была сделана фиксация.

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

Что вам нужно сделать, так это изменить историю, чтобы в Git/GitHub казалось, что вы никогда не добавляли большой файл.

Если файл был только что добавлен в ваш последний коммит перед попыткой отправки, вам повезло. Вы можете просто удалить файл с помощью следующей команды:

git rm --cached csv_building_damage_assessment.csv (удаляет файл)

git commit --amend -C HEAD (исправляет историю)

Но если файл был добавлен в более ранней фиксации, процесс будет немного дольше. Вы можете либо использовать BFG Repo-Cleaner, либо запустить git rebase или git filter-branch для удаления файла.

Решение 2. Создание выпусков для упаковки программного обеспечения

Как упоминалось ранее, одним из способов раздувания репозиториев является распространение скомпилированного кода и готовых выпусков в вашем репозитории.

Некоторые проекты требуют распространения больших файлов, таких как двоичные файлы или установщики, в дополнение к распространению исходного кода. Если это так, вместо того, чтобы фиксировать их как часть исходного кода, вы можете создавать релизы на GitHub. Релизы позволяют упаковывать заметки о выпуске программного обеспечения и ссылки на двоичные файлы для использования другими людьми. Имейте в виду, что размер каждого файла, включенного в выпуск, не должен превышать 2 ГБ.

Узнайте, как создать релиз, здесь.

Решение 3. Версируйте большие файлы с помощью Git LFS

Предыдущие решения были сосредоточены на том, как избежать фиксации большого файла или его удаления из репозитория. Что, если вы хотите сохранить его? Допустим, вы пытаетесь зафиксировать psd.csv и получаете сообщение об ошибке слишком большой файл. Вот где Git LFS приходит на помощь.

Git LFS позволяет отправлять на GitHub файлы, размер которых превышает лимит хранилища. Он делает это, сохраняя ссылки на файл в репозитории, но не на сам файл. Другими словами, Git LFS создает файл-указатель, который действует как ссылка на фактический файл, который будет храниться где-то еще.Этот файл указателя будет управляться GitHub, и всякий раз, когда вы клонируете репозиторий, GitHub будет использовать файл указателя в качестве карты, чтобы найти для вас большой файл.

Git LFS использует метод под названием lazy pull and fetch для загрузки файлов и их различных версий. По умолчанию эти файлы и их история не загружаются каждый раз, когда кто-то клонирует репозиторий — загружается только версия, относящаяся к извлекаемому коммиту. Это позволяет легко поддерживать управляемый размер репозитория и сокращает время загрузки и извлечения.

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

Чтобы начать работу с Git LFS, загрузите версию, соответствующую ОС вашего устройства, здесь.

  1. Настройте Git LFS для своего аккаунта, запустив git lfs install
  2. Выберите типы файлов, которыми должен управлять Git LFS, с помощью команды git lfs track "*.file extension or filename" . Это создаст . файл gitattributes.
  3. Добавьте промежуточную область файла .gitattributes с помощью команды git add .gitattributes .
  4. Зафиксируйте и отправьте как обычно.

Обратите внимание, что описанный выше метод будет работать только для файлов, которые ранее не отслеживались Git. Если у вас уже есть репозиторий с большими файлами, отслеживаемыми Git, вам необходимо перенести ваши файлы с отслеживания Git на отслеживание git-lfs. Просто выполните следующую команду:

git lfs migrate import --include=""

С включенной Git LFS вы сможете извлекать, изменять и отправлять большие файлы. Однако, если у соавторов вашего репозитория не установлена ​​и не настроена Git LFS, у них не будет доступа к этим файлам. Всякий раз, когда они клонируют ваш репозиторий, они смогут получить только файлы указателей.

Чтобы все работало правильно, им необходимо скачать Git LFS и клонировать репозиторий, как и любой другой репозиторий. Затем, чтобы получить последние файлы Git LFS с GitHub, запустите:

git lfs fetch origin master

Заключение

GitHub плохо работает с большими файлами, но с Git LFS это можно обойти. Однако, прежде чем вносить какие-либо из этих важных изменений, таких как удаление файлов из истории Git/GitHub, было бы разумно сначала создать резервную копию этого репозитория GitHub. Одна неверная команда и файлы могут быть безвозвратно потеряны в одно мгновение.

Когда вы создаете резервные копии своих репозиториев с помощью такого инструмента, как BackHub (теперь часть Rewind), вы можете легко восстановить свои резервные копии непосредственно на свой GitHub или клонировать непосредственно на свой локальный компьютер, если что-то пойдет не так.

Линда Икечукву

Линда Икечукву — разработчик интерфейсов-самоучек и технический писатель из Лагоса, Нигерия. Когда она не создает веб-интерфейсы, она создает технические сообщества.

GitHub – это интернет-платформа для хостинга и разработки, позволяющая разработчикам совместно работать над проектом. Вы можете использовать Github для размещения своих файлов и предоставления прямых ссылок для скачивания. Загвоздка здесь в том, что GitHub позволяет загружать файлы только до 25 МБ. Если вы попытаетесь загрузить файлы размером более 25 МБ, вы увидите сообщение об ошибке «Yowza, это большой файл». Повторите попытку с файлом меньше 25 МБ’.

Если вы хотите загрузить на GitHub файлы размером более 25 МБ, ниже приведены два способа бесплатного размещения больших файлов на Git. Один метод требовал, чтобы вы загрузили настольное приложение GitHub, а второй метод размещал файлы в виде общедоступной версии. Итак, давайте проверим, как исправить Yowza, That’s a Big File на GitHub и загружать файлы размером более 25 МБ, 100 МБ и более.

Способ 1. Использование настольного приложения GitHub

Вы можете использовать приложение GitHub на компьютере с Windows или Mac, чтобы создать локальную папку репозитория, а затем переместить/скопировать большие файлы в локальную папку. Вы можете отправить файлы на источник или серверы GitHub, таким образом, большие файлы будут сохранены в Git.

Meth0d 2. Создайте релиз

Когда вы размещаете файл как общедоступный выпуск, он доступен для загрузки и доступа всем желающим. Вы можете создать общедоступную версию и загрузить файл, если хотите разместить файлы для загрузки.

Это простое руководство. вы можете загружать файлы размером более 25 МБ на свой GitHub и исправлять Yowza; это большой файл. Повторите попытку с файлом меньше 25 МБ.

Оставить ответ Отменить ответ

BytesBin – это блог, в котором содержится информация об облачном хранилище и службах размещения файлов. Подробнее

Читайте также: