← До фільтрів та технологій

← До списку лабораторних по Git

Git Лабораторна 34: Прибирання зайвих обʼєктів

Технологія: Git

Номер лабораторної: 34 · Рівень: middle

Тема: Обслуговування репозиторію: git gc та prune

Повний опис / сценарій лабораторної:

Мета: навчитися акуратно використовувати git gc та git prune, розуміти коли це доцільно і чому на прод серверах краще покладатися на автоматичний режим.



Крок 1. Переглянути розмір каталогу .git.

Команда: cd ~/git_lab1 && du -sh .git

Пояснення: зафіксуйте поточний розмір.



Крок 2. Запустити git count objects.

Команда: git count-objects -v

Пояснення: показує кількість обʼєктів і їх розмір до компресії.



Крок 3. Виконати git gc у стандартному режимі.

Команда: git gc

Пояснення: Git упакує обʼєкти з метою економії місця.



Крок 4. Повторити git count objects.

Команда: git count-objects -v

Пояснення: кількість вільних обʼєктів має зменшитися.



Крок 5. Ще раз перевірити розмір .git.

Команда: du -sh .git



Крок 6. Ознайомитися з опцією aggressive.

Пояснення: git gc --aggressive може дати ще більшу економію, але потребує часу.



Крок 7. На тестовому репозиторії виконати git gc --aggressive.

Команда: git gc --aggressive

Пояснення: робіть це тільки якщо у вас є час і немає паралельних операцій.



Крок 8. Коротко вивчити git prune.

Команда: git help prune | head -n 20

Пояснення: команда видаляє обʼєкти до яких немає посилань.



Крок 9. Обговорити чому небезпечно запускати prune якщо покладаєтеся на reflog для відновлення.

Пояснення: видалені обʼєкти можуть бути потрібні для відкату помилок.



Крок 10. Міні звіт.

Завдання: опишіть політику обслуговування git репозиторіїв на build серверах з точки зору gc, prune та обмежень диска.