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.