Чому git постійно каже мені, що це “Автопакування сховища у фоновому режимі для оптимальної продуктивності”?


100

Примітка : Я не думаю, що це дублікат цього питання , що стосується не фонового пакету, який висить git із незначно іншим повідомленням про помилку .


В одному зі своїх сховищ git, кожного разу, коли я викликаю (наприклад) git fetch, git друкує:

Auto packing the repository in background for optimum performance.
See "git help gc" for manual housekeeping.

Здається, це друкується кожного разу, якщо я git fetchповторюю це неодноразово, навіть коли немає змін і нічого git fetchробити. Для мене це не має великого сенсу. Здається, це трапляється і з іншими мережевими операціями, такими як git pushі git pull.

Команда миттєво повертається до запиту без подальшого виводу, і я не можу знайти жодного процесу git, запущеного на моїй машині. Здається, це відбувається лише з цим сховищем і лише на цій машині. git config -l | grep gcнічого не повертає.

Що я можу зробити, щоб діагностувати або виправити цю проблему?

$ git --version 
git version 2.0.1

Я використовую OS X 10.9.


Це схоже на ту саму проблему, що і на запитання, яке ви зв’язали, але відбувається досить швидко, щоб не висіти.
Holloway


Тренго, я не думаю. Повідомлення про помилку дещо відрізняється - там згадується "фон".
Andrew Ferrier

Тренго, вибачте, ви мали рацію, це було пов’язано (друге посилання). Дякую за вказівник, див. Мою відповідь нижче для деталей.
Andrew Ferrier

Відповіді:


167

Я знайшов рішення з другого коментаря, який ви надали, Тренго, дякую. Виявляється, у мене було кілька звисаючих крапель, які були .git/objects/17і, отже, спрацьовували упаковку:

$ git fsck
dangling blob d9ff0aeac4aa8b4e0907daed675ebf60278bc977
dangling blob dbff2d073741f9775c815d4a3c623736af224dad
dangling blob e1ffbab1c5b985cd1cd3bc0281075ea2ed80744a
dangling blob fdff59878ccb3a75689f4acca615cfb635288774

Це очистило їх:

$ git gc --prune=now

Майте на увазі, згідно з коментарем Хенріка нижче, це може бути трохи небезпечно. Піклуватися!


19
Дякую! Здавалося, це спрацювало для мене. Майте на увазі, що --prune=nowце трохи небезпечно. За замовчуванням --pruneбуде тримати 2 тижні звисаючих краплин, тобто, якщо ви випадково зробили неправильний перебазування 5 хвилин тому або видалили гілку вчора, ви можете відновити. Після запуску цієї команди ви втрачаєте всі звисаючі блоги до цього моменту - не 2 тижні тому. Крім того, здається, ніколи не слід запускати його під час виконання інших команд Git в іншому терміналі, інакше ваше репо може пошкодитися.
Генрік Н

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