git застряг на фазі розпакування об'єктів


78

Я намагаюся зробити це git pullз віддаленого сховища в github на локальну машину ... але git застряє на 70% у фазі "Розпакування об'єктів", без ознак нікуди йти .. (залишив це вже кілька годин без змін)

Будь-яка пропозиція щодо вирішення цієї проблеми?

Чи можна доручити git завантажувати лише останню коміт / версію з віддаленого сховища без усіх проміжних станів?


Незважаючи на те, що ви використовуєте ssh, спробуйте stackoverflow.com/questions/6842687/… , про всяк випадок.
VonC

Швидше за все, що господар відмовляється від цього, можливо, ви можете спробувати це зробити git clone --depth 1. Досить часто покращення підключення до Інтернету дуже допомагає, наприклад, на моєму досвіді клонування репозиторію Github на сервері Rackspace відбувається швидко (отже, ви перебуваєте в одній інфраструктурі, і github.comсервери можуть бути поруч).
errordeveloper

Не фіксуйте двійкові файли в git. Git призначений виключно для контролю версій.
Грег

Я видаляю сховище і клоную його знову. Мені це допомогло.
Гліб Бєляєв

Відповіді:


56

У мене була та ж проблема, коли я git тягну сховище на github.com. Я виявив, що є кілька великих файлів, і підключення до github було повільним. Тож, можливо, вам просто доведеться терпляче чекати, перш ніж git витягне все сховище.


17
цей коментар + терпіння мені допомогли
Коті Ембрі

+ повторна спроба кілька разів, поки пропускна здатність не стане випадковою. (Ні, я все ще не шкодую про свій дещо повільніший, але ще не вибраний провайдер ...)
ijoseph

Так, це тому, що деякі файли мають великий розмір. Якщо хтось не вистачає терпіння чекати, завантаження ZIP-версії репо може допомогти
Програміст Данчук,

14

Для мене рішенням було змінити специфікатор протоколу з https на git, наприклад:
git clone https://github.com/some/repository
на
git clone git://github.com/some/repository

Редагувати:
Ось дещо про протоколи, що використовуються в Git .
Деякі основні моменти:
Недоліком протоколу Git є відсутність автентифікації.
Він також вимагає доступу брандмауера до порту 9418, що не є стандартним портом, який корпоративні брандмауери завжди дозволяють


Я думаю, що https не працює, тому що я стою за брандмауером. Чому git працює, я не можу сказати.
Al Lelopath

4

Я виявляю, що великі двійкові об'єкти (як-от файли Adobe Illustrator тощо), як правило, також заглиблюють весь процес витягування / штовхання.

Саме тому мені зараз подобається використовувати два сховища для проектування та коду.


Перший раз застряг на фазі розпакування об'єкта. Тоді я розумію, що у мене є два файли PDF у сховищі GitHub. Цікаво ...
Atlas7,

0

[...] але git застряє на 70% у Unpacking objectsфазі " ", без ознак нікуди

З Git 2.25 (Q1 2020) " git unpack-objects" показував прогрес лише на основі кількості отриманих та розпакованих об'єктів, які заглохли, коли йому доводиться обробляти незвично великий об'єкт.

Тепер він також показує пропускну здатність .

Див. Коміт bae60ba (19 листопада 2019 р.) Від SZEDER Gábor ( szeder) .
(Об’єднано Junio ​​C Hamano - gitster- у коміті cf91c31 , 05 грудня 2019)

builtin/unpack-objects.c: показати прогрес пропускної здатності

Підписав: SZEDER Gábor

'git unpack-objects' показує рядок прогресу, що підраховує лише кількість розпакованих об'єктів, тому, якщо деякі отримані об'єкти надзвичайно великі, тоді цей прогрес може здатися замороженим під час обробки такого більшого об'єкта.

Я просто дивився на, здавалося б, застряглий рядок прогресу більше півхвилини, тоді як ` git fetch` був зайнятий, отримуючи пакет лише з кількома об'єктами (тобто менше, ніж ' fetch.unpackLimit'), причому один з них перевищував 80 Мб.

Відображення пропускної здатності в git unpack-objectsрядку прогресу, щоб ми показали, що щось відбувається навіть під час отримання та обробки великого об’єкта.

Підрахунок спожитих байтів знаходиться далеко від місця, яке підраховує об'єкти та відображає прогрес, і для обходу struct progressекземпляра ' ' нам довелося б змінити підпис п'яти функцій і 14 їхніх викличних сайтів: це занадто великий відтік, тож давайте скоріше зробіть його статичним для сфери дії.

' git index-pack', тобто нерозпакований двоюрідний брат ' git unpack-objects' вже включає пропускну здатність у свій рядок прогресу, і він також використовує статичний struct progressекземпляр обсягу файлу ' '.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.