Skip to content

rus translate mistake #43271

@Gibsy

Description

@Gibsy

Code of Conduct

What article on docs.github.com is affected?

https://docs.github.com/ru/get-started/using-git/troubleshooting-the-2-gb-push-limit

What part(s) of the article would you like to see updated?

Устранение неполадок с ограничением push в 2 ГиБ

Узнайте, как обойти ограничение в 2 ГиБ.

О пределе push

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

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

  • fatal: the remote end hung up unexpectedly
  • remote: fatal: pack exceeds maximum allowed size

Вы можете разделить отправку на небольшие части или удалить журнал Git и начать с нуля. Если вы сделали один коммит размером более 2 ГиБ и не можете удалить историю Git и начать с нуля, то вам потребуется разбить большой коммит на несколько меньших с помощью интерактивного rebase.

Разделение большого push

Вы можете избежать превышения лимита, разбив пуш на более мелкие части, каждая из которых должна быть размером менее 2 ГиБ. Если ветвь находится в пределах этого размера, ее можно отправить одновременно. Однако, если размер ветки превышает 2 ГиБ, вам нужно будет разделить отправку на еще более мелкие части и отправлять только несколько коммитов за раз.

  1. Если вы еще не настроили удаленный, добавьте репозиторий в качестве нового удаленного. Дополнительные сведения см. в разделе Управление удаленными репозиториями.

  2. Чтобы найти подходящие коммиты, распределенные по журналу основной ветви в локальном репозитории, выполните следующую команду:

    git log --oneline --reverse refs/heads/BRANCH-NAME | awk 'NR % 1000 == 0'

    Эта команда показывает каждую 1000-ю фиксацию. Можно увеличить или уменьшить число, чтобы изменить размер шага.

  3. Отправьте каждую из этих фиксаций в один раз в размещенный репозиторий GitHub.

    git push REMOTE-NAME +<YOUR_COMMIT_SHA_NUMBER>:refs/heads/BRANCH-NAME

    Если появится сообщение remote: fatal: pack exceeds maximum allowed size, уменьшите размер шага на шаге 2 и повторите попытку.

  4. Выполните один и тот же процесс для каждой фиксации, определенной в журнале с шага 2.

  5. Если это первый раз, когда этот репозиторий отправляется в GitHub, выполните окончательную отправку зеркального отображения, чтобы убедиться, что все оставшиеся ссылки отправляются вверх.

    git push REMOTE-NAME --mirror

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

После ознакомления с процедурой можно автоматизировать шаги 2–4, чтобы упростить процесс. Например:

step_commits=$(git log --oneline --reverse refs/heads/BRANCH-NAME | awk 'NR % 1000 == 0')
echo "$step_commits" | while read commit message; do git push REMOTE-NAME +$commit:refs/heads/BRANCH-NAME; done

Начиная с нуля

Если репозиторий пуст или первый коммит превышает 2 ГиБ, и вы готовы сбросить историю, можно начать с нуля.

  1. В локальной копии удалите скрытую .git папку, чтобы удалить всю предыдущую историю Git и преобразовать ее обратно в обычную папку, полную файлов.

  2. Создайте пустую папку;

  3. Запустите git init и git lfs install в новой папке и добавьте новый пустой репозиторий GitHub в качестве удаленного.

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

    Если вы еще не используете Git LFS, можно пропустить этот шаг или настроить правила отслеживания, которые вы планируете использовать в .gitattributes файле в новой папке, прежде чем копировать все другие файлы. Дополнительные сведения см. в разделе Настройка Git Large File Storage.

  5. Перемещайте пакеты файлов размером менее 2 ГиБ из старой папки в новую. После перемещения каждого пакета создайте фиксацию и отправьте ее перед перемещением следующего пакета. Рекомендуется ограничивать размер пакета примерно 2 ГиБ. В качестве альтернативы, если у вас есть папка с файлами, предназначенными для Git LFS, вы можете игнорировать эти файлы при рассмотрении лимита в 2 ГиБ на пуш.

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

Additional information

The Russian version of the article "Troubleshooting the 2 GB push limit" contains numerous inaccuracies and literal translations that make it difficult to understand.
Some terms are translated incorrectly, sentences are overly long, and in some places the meaning is lost.
I suggest reviewing the translation and improving the readability of the text.

Metadata

Metadata

Assignees

No one assigned

    Labels

    contentThis issue or pull request belongs to the Docs Content teamtriageDo not begin working on this issue until triaged by the team

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions