Подтвердить что ты не робот

Git зависает при записи объектов

Я пытаюсь git push -u origin master И он просто висит на

Writing objects:  99% (219/220), 12.65 MiB | 97 KiB/s

Часть 12.65 смещается. Когда я выхожу из процесса и запускаю его снова, он возобновляется на уровне 99%, но никогда не заканчивается, как и раньше.

Он никогда не продвигался успешно. Это начальная фиксация.

4b9b3361

Ответ 1

Это происходило из-за огромного, незарегистрированного файла в каталоге репо. Упс.

EDIT

Зависание было связано с тем, что загрузка файла заняла много времени. Файл не должен был быть включен в толчок.

EDIT

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

Ответ 2

Я последовал совету VonC:

git config --global http.postBuffer 524288000

Для будущих ссылок на основе комментариев:

500 MB: 524288000 (as posted in the original answer)
1 GB: 1048576000
2 GB: 2097152000 (anything higher is rejected as 'out of range')

Ответ 3

У меня была та же проблема с (запись объектов% 16), застрявшая, затем фатальная. Я решил это, сохранив текущие изменения и клонировав новый репозиторий, а затем скопировал в него измененные файлы.

Eg. Предположим, что текущий репозиторий - это A, тогда все, что вам нужно сделать, это:

  • mv A B
  • git clone A
  • mv B/* A/
  • rm -rf B

Затем зафиксируйте и нажмите, и все это работает нормально. Он распознал перемещенные файлы как измененные:)

Ответ 4

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

Затем проверьте, есть ли у вас правильные права на запись в удаленном репо.

Пример:

Инициация локального и дальнего репо

git init /tmp/src
git init --bare /tmp/dst
cd /tmp/src

Добавление удаленного репо в источник

src > git remote add dest /tmp/dst

Имитация проблемы

src > chmod -R 555 /tmp/dst

Добавление поддельного файла и его отправка

src > touch a && git add a && git commit -m 'demo'
src > git push --set-upstream dest master
src > git push
Counting objects: 3, done.
Writing objects: 99% (2/3), 202 bytes | 0 bytes/s.

Мерзавец висит

Решение

src > chmod -R 775 /tmp/dst

Ответ 5

В моем случае у меня была медленная скорость загрузки в Интернете, и файл, который я хотел нажать, был большим, трюк заключается в том, чтобы использовать git LFS (большое хранилище файлов), куда гораздо больнее загружать большие файлы, вы можете найти a git учебник LFS здесь

Ответ 6

git clean -f -n решает мою проблему. Существует много файлов без следа, которые не обнаружены. Но будьте осторожны, потому что это приведет к удалению файлов в вашем каталоге.

Ответ 7

В моем случае я пытался подтолкнуть, не выполняя правила моей компании. Позже я узнал, что мы должны начинать наши коммит-сообщения с "MOBIL-XXXX", где XXXX - это номер, который нам назначен в Jira (еще один инструмент, который мы используем для отслеживания ситуации разработки).

Убедитесь, что у вашей компании есть подобное правило ограничения.