# Сведения о больших файлах на GitHub

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

## О ограничениях размера на GitHub

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

### Ограничения размера файла

GitHub ограничивает размер файлов, разрешённых в репозиториях. Если вы попытаетесь добавить или обновить файл больше 50 МиБ, вы получите предупреждение от Git. Изменения будут успешно отправлены в репозиторий, но, возможно, будет лучше удалить фиксацию, чтобы свести к минимуму влияние на производительность. Дополнительные сведения см. в статье [об удалении файлов из журнала](#removing-files-from-a-repositorys-history) репозитория.

> \[!NOTE]
> Если добавить файл в репозиторий через браузер, он не может быть больше 25 МиБ. Дополнительные сведения см. в разделе [Добавление файла в репозиторий](/ru/repositories/working-with-files/managing-files/adding-a-file-to-a-repository).

GitHubблокирует файлы больше .100 МиБ

Чтобы отслеживать файлы, выходящие за пределы этого лимита, необходимо использовать Хранилище больших файлов Git (Git LFS (Git Large File Storage — поддержка хранения больших файлов в Git)). Дополнительные сведения см. в разделе [Сведения о хранилище больших файлов Git Large File Storage](/ru/repositories/working-with-files/managing-large-files/about-git-large-file-storage).

Если вам нужно распространять большие файлы внутри репозитория, вы можете создавать релизы вместо GitHub.com отслеживания файлов. Дополнительные сведения см. в разделе ["Распространение больших двоичных файлов](#distributing-large-binaries)".

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

### Ограничения на размер репозиториев

Рекомендуется, чтобы репозитории оставались небольшими, в идеале менее 1 ГБ, и крайне нежелательно, чтобы их размер превышал 5 ГБ. Небольшие репозитории быстрее клонируются и проще в работе и поддержке. Если ваше хранилище сильно влияет на нашу инфраструктуру, вы можете получить письмо с Служба поддержки GitHub просьбой принять меры по исправлению. Мы стараемся находить гибкий подход, особенно в случае с крупными проектами со множеством участников совместной работы. По возможности мы попробуем вместе с вами найти решение. Вы можете предотвратить воздействие репозитория на нашу инфраструктуру, эффективно управляя его размером и общей работоспособностью. Советы и средство для анализа репозиториев можно найти в репозитории [`github/git-sizer`](https://github.com/github/git-sizer).

Из-за внешних зависимостей репозитории GIT могут стать очень большими. Чтобы избежать заполнения репозитория внешними зависимостями, рекомендуется использовать диспетчер пакетов. К популярным диспетчерам пакетов для распространенных языков относятся [Bundler](http://bundler.io/), [диспетчер пакетов Node](http://npmjs.org/) и [Maven](https://maven.apache.org/). Эти диспетчеры пакетов поддерживают работу с репозиториями GIT напрямую, поэтому предварительно упакованные источники не нужны.

GIT не предназначен для использования в качестве средства резервного копирования. Однако существует множество решений, специально предназначенных для создания резервных копий, такие как [Arq](https://www.arqbackup.com/), [Carbonite](http://www.carbonite.com/) и [CrashPlan](https://www.crashplan.com/en-us/).

## Удаление файлов из журнала репозитория

> \[!WARNING]
> Эти процедуры навсегда удалят файлы из репозитория вашего компьютера и GitHub.com. Если файл важен, создайте его локальную резервную копию в каталоге за пределами репозитория.

### Удаление файла, добавленного в рамках последней неотправленной фиксации

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

1. Откройте <span class="platform-mac">Терминал</span><span class="platform-linux">Терминал</span><span class="platform-windows">GIT Bash</span>.

2. Измените текущий рабочий репозиторий на локальный проект.

3. Чтобы удалить файл, введите команду `git rm --cached`:

   ```shell
   $ git rm --cached GIANT_FILE
   # Stage our giant file for removal, but leave it on disk
   ```

4. Зафиксируйте это изменение с помощью параметров `--amend -CHEAD`:

   ```shell
   $ 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
   ```

5. Продвигайте свои коммиты до GitHub.com:

   ```shell
   $ git push
   # Push our rewritten, smaller commit
   ```

### Удаление файла, добавленного в рамках более ранней фиксации

Если вы добавили файл в рамках предыдущей фиксации, его необходимо удалить из журнала репозитория.  Чтобы удалить файлы из журнала репозитория, рекомендуется `git filter-repo` выполнить команду. Дополнительные сведения см. в разделе [Удаление конфиденциальных данных из репозитория](/ru/authentication/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository).

> Кроме того, если вы не хотите установить дополнительное средство, можно использовать интерактивную перебазу для удаления проблемных фиксаций. Для этого:
>
> * Необходимо знать, какие фиксации добавлены или изменены в этом файле.
> * Фиксации должны быть частью только одной ветви.
> * Одна ветвь, к которой принадлежат фиксации, не должна иметь слияний, так как были применены фиксации.
>
> Дополнительные сведения об интерактивных перебазах см. в разделе [Перемещений изменений из одной ветви в другую в GIT в командной строке](/ru/get-started/using-git/using-git-rebase-on-the-command-line).  Если вы не уверены в соответствии с необходимыми условиями для исправления с помощью интерактивной повторной базы, следует использовать `git filter-repo`.

## Распространение больших двоичных файлов

Если вам нужно распространять большие файлы в репозитории, вы можете создавать релизы на GitHub.com. Выпуски позволяют упаковывать программное обеспечение, заметки о выпуске и ссылки на двоичные файлы для использования другими людьми. Дополнительные сведения см [. в AUTOTITLE](/ru/repositories/releasing-projects-on-github/about-releases).

Мы не ограничиваем общий размер двоичных файлов в выпуске или пропускную способность для их доставки. Однако каждый отдельный файл должен быть меньше максимального размера файла для Git LFS (Git Large File Storage — поддержка хранения больших файлов в Git) вашего тарифа. См [. раздел AUTOTITLE](/ru/repositories/working-with-files/managing-large-files/about-git-large-file-storage).