Git зависает при записи объектов
Я пытаюсь git push -u origin master
И он просто висит на
Writing objects: 99% (219/220), 12.65 MiB | 97 KiB/s
Часть 12.65
смещается. Когда я выхожу из процесса и запускаю его снова, он возобновляется на уровне 99%, но никогда не заканчивается, как и раньше.
Он никогда не продвигался успешно. Это начальная фиксация.
Ответы
Ответ 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 (еще один инструмент, который мы используем для отслеживания ситуации разработки).
Убедитесь, что у вашей компании есть подобное правило ограничения.