О ограничениях размера на GitHub
GitHubстарается обеспечить объём хранения для всех репозиториев Git, хотя существуют жёсткие ограничения по размеруи репозиториев, а также рекомендации по размеру репозиториев. Для обеспечения производительности и надёжности для наших пользователей мы активно отслеживаем сигналы общего состояния репозитория. Здоровье репозитория зависит от различных взаимодействующих факторов, включая размер, частоту коммитов, содержимое и структуру.
Ограничения размера файла
GitHub ограничивает размер файлов, разрешённых в репозиториях. Если вы попытаетесь добавить или обновить файл больше 50 МиБ, вы получите предупреждение от Git. Изменения будут успешно отправлены в репозиторий, но, возможно, будет лучше удалить фиксацию, чтобы свести к минимуму влияние на производительность. Дополнительные сведения см. в статье об удалении файлов из журнала репозитория.
Примечание.
Если добавить файл в репозиторий через браузер, он не может быть больше 25 МиБ. Дополнительные сведения см. в разделе Добавление файла в репозиторий.
GitHubблокирует файлы больше .100 МиБ
Чтобы отслеживать файлы, выходящие за пределы этого лимита, необходимо использовать Хранилище больших файлов Git (Git LFS (Git Large File Storage — поддержка хранения больших файлов в Git)). Дополнительные сведения см. в разделе Сведения о хранилище больших файлов Git Large File Storage.
Если вам нужно распространять большие файлы внутри репозитория, вы можете создавать релизы вместо GitHub.com отслеживания файлов. Дополнительные сведения см. в разделе "Распространение больших двоичных файлов".
В GIT не предусмотрена обработка больших файлов SQL. Чтобы совместно использовать большие базы данных с другими разработчиками, рекомендуется использовать службу общего доступа к файлам.
Ограничения на размер репозиториев
Рекомендуется, чтобы репозитории оставались небольшими, в идеале менее 1 ГБ, и крайне нежелательно, чтобы их размер превышал 5 ГБ. Небольшие репозитории быстрее клонируются и проще в работе и поддержке. Если ваше хранилище сильно влияет на нашу инфраструктуру, вы можете получить письмо с Служба поддержки GitHub просьбой принять меры по исправлению. Мы стараемся находить гибкий подход, особенно в случае с крупными проектами со множеством участников совместной работы. По возможности мы попробуем вместе с вами найти решение. Вы можете предотвратить воздействие репозитория на нашу инфраструктуру, эффективно управляя его размером и общей работоспособностью. Советы и средство для анализа репозиториев можно найти в репозитории github/git-sizer.
Из-за внешних зависимостей репозитории GIT могут стать очень большими. Чтобы избежать заполнения репозитория внешними зависимостями, рекомендуется использовать диспетчер пакетов. К популярным диспетчерам пакетов для распространенных языков относятся Bundler, диспетчер пакетов Node и Maven. Эти диспетчеры пакетов поддерживают работу с репозиториями GIT напрямую, поэтому предварительно упакованные источники не нужны.
GIT не предназначен для использования в качестве средства резервного копирования. Однако существует множество решений, специально предназначенных для создания резервных копий, такие как Arq, Carbonite и CrashPlan.
Удаление файлов из журнала репозитория
Предупреждение
Эти процедуры навсегда удалят файлы из репозитория вашего компьютера и GitHub.com. Если файл важен, создайте его локальную резервную копию в каталоге за пределами репозитория.
Удаление файла, добавленного в рамках последней неотправленной фиксации
Если файл был добавлен с вашим последним коммитом, и вы не отправили в GitHub.com, вы можете удалить файл и изменить коммит:
-
Откройте ТерминалТерминалGIT Bash.
-
Измените текущий рабочий репозиторий на локальный проект.
-
Чтобы удалить файл, введите команду
git rm --cached:$ git rm --cached GIANT_FILE # Stage our giant file for removal, but leave it on disk -
Зафиксируйте это изменение с помощью параметров
--amend -CHEAD:$ git commit --amend -CHEAD # Amend the previous commit with your change # Simply making a new commit won't work, as you need # to remove the file from the unpushed history as well -
Продвигайте свои коммиты до GitHub.com:
$ git push # Push our rewritten, smaller commit
Удаление файла, добавленного в рамках более ранней фиксации
Если вы добавили файл в рамках предыдущей фиксации, его необходимо удалить из журнала репозитория. Чтобы удалить файлы из журнала репозитория, рекомендуется git filter-repo выполнить команду. Дополнительные сведения см. в разделе Удаление конфиденциальных данных из репозитория.
Кроме того, если вы не хотите установить дополнительное средство, можно использовать интерактивную перебазу для удаления проблемных фиксаций. Для этого:
- Необходимо знать, какие фиксации добавлены или изменены в этом файле.
- Фиксации должны быть частью только одной ветви.
- Одна ветвь, к которой принадлежат фиксации, не должна иметь слияний, так как были применены фиксации.
Дополнительные сведения об интерактивных перебазах см. в разделе Перемещений изменений из одной ветви в другую в GIT в командной строке. Если вы не уверены в соответствии с необходимыми условиями для исправления с помощью интерактивной повторной базы, следует использовать
git filter-repo.
Распространение больших двоичных файлов
Если вам нужно распространять большие файлы в репозитории, вы можете создавать релизы на GitHub.com. Выпуски позволяют упаковывать программное обеспечение, заметки о выпуске и ссылки на двоичные файлы для использования другими людьми. Дополнительные сведения см . в AUTOTITLE.
Мы не ограничиваем общий размер двоичных файлов в выпуске или пропускную способность для их доставки. Однако каждый отдельный файл должен быть меньше максимального размера файла для Git LFS (Git Large File Storage — поддержка хранения больших файлов в Git) вашего тарифа. См . раздел AUTOTITLE.