Git·30 питань

Як очистити локальний репозиторій від сміття та невикористовуваних файлів?

Відповідь

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

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

Щоб підтвердити видалення тільки невідстежуваних файлів, використовується комбінація ключів -f. Якщо вам потрібно видалити також невідстежувані директорії, додається флаг -d. Повна команда для глибокого очищення робочої зони виглядає як git clean -fd. Будьте вкрай обережні з цією командою, оскільки відновити видалені таким чином файли через Git буде неможливо.

Окрім файлів у робочій директорії, з часом у репозиторії накопичуються об'єкти, що втратили зв'язок із гілками та комітами, наприклад, після скидання історії або видалення старих гілок. Для очищення бази даних від таких завислих об'єктів використовується збирач сміття git gc. Ця команда оптимізує базу даних Git, запаковує файви і видаляє невикористовуваний непотріб, що дозволяє зменшити розмір папки проєкту на диску.

Також корисно періодично очищати локальні посилання на віддалені гілки, які вже були видалені на сервері колегами. Для цього використовується команда git remote prune origin. Вона синхронізує список віддалених гілок у вашому локальному кеші, видаляючи застарілі вказівники та підтримуючи структуру репозиторію в актуальному і чистому стані.

Чи корисна ця відповідь?

Інші питання цієї теми

Пов’язані питання з інших тем