Git Gui: Постійно отримуючи “На даний момент у цьому сховищі є приблизно 320 вільних об’єктів”.


89

Щоразу, коли я запускаю Git Gui у певному проекті, я отримую таке повідомлення:

На даний момент у цьому сховищі є приблизно 320 вільних об'єктів.

введіть тут опис зображення

Потім я продовжую натискати Так , і я отримую таке діалогове вікно:

введіть тут опис зображення

Справа в тому, що коли я знову відкриваю Git Gui, я отримую те саме повідомлення , знову близько 320 вільних предметів! Це так, ніби натискання кнопки Так не мало ніякого ефекту.


Чи можете ви розмістити результати git count-objects -v?
CB Bailey


5
@TheCodeArtist Дякую, я знайшов відповідь там. git gcВідповідно до цього коментаря, явний запуск із командного рядка працював у мене .
sashoalm

Відповіді:


80

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

cd path/to/your/git/repo
git gc --aggressive

З виходу git help gc:

Запускає ряд завдань ведення домашнього господарства в поточному сховищі, таких як стискання версій файлів (для зменшення дискового простору та підвищення продуктивності) та видалення недосяжних об’єктів, які могли бути створені з попередніх викликів git add.

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

--агресивний

Зазвичай git gc працює дуже швидко, забезпечуючи хороше використання та продуктивність дискового простору. Цей параметр змусить git gc агресивніше оптимізувати сховище, витрачаючи на це набагато більше часу. Ефекти цієї оптимізації постійні, тому цю опцію потрібно використовувати лише зрідка; кожні кілька сотень наборів змін або близько того.

Це повинно на деякий час уникнути запиту.


19
Що дивно, це те, що просто запуск git gcіз командного рядка це виправив для мене. Може бути, git guiпрацює щось на зразок git gc --extra-unaggressive:)
sashoalm

38
git pruneздається, це виправляє, коли git gcні.
Mahn

1
Ви зазвичай не хочете бігати з --aggressive; що призводить gitдо перерахунку дельт, що зазвичай є непродуктивним і дуже трудомістким; див. цю публікацію - manсторінка вводить в оману. Напевно git gc, в цьому випадку достатньо простого .
Джефф Клітес

16
Довелося використовувати, --prune=allщоб позбутися повідомлення. Ні git gcв командному рядку, ні в опціях, --aggressiveні --pruneне зробив трюку.
світанок

1
@JeffClites Статті, на яку ви посилаєтесь, на цей момент 11 років і вказується: "З цієї причини - агресивний, ймовірно, буде видалений зі сторінок зі сторінками та залишений ненадовго як недокументована функція.". Не копаючи далі, здається дивним, що порушене повідомлення все ще є. Чи є ймовірність того, що поведінка була змінена за умови написання статті?
труба

3

Я використовую команду:

git gc --prune = зараз

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

джерело посилання: https://git-scm.com/docs/git-gc


1
Треба сказати, що це рішення допомогло мені. Дивно, git gc --aggressiveале не видалив попередження (як і не натиснувши на інтерфейс, який, здається, виконує просте git gc).
сарафін
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.