Поверхневий клон (shallow clone) завантажує не всю історію, а лише останні N комітів:
git clone --depth 1 https://github.com/laravel/laravel.git
Замість тисяч комітів - лише останній знімок файлів. Клон великого репозиторію з багаторічною історією стає в рази меншим і швидшим.
Де це доречно:
- CI: для запуску тестів історія не потрібна - лише поточний код.
actions/checkoutу GitHub Actions за замовчуванням робить саме клон з глибиною 1; - збирання Docker-образів з репозиторію;
- одноразове використання: подивитися код, зібрати проєкт, встановити інструмент.
Обмеження - все, що потребує історії:
| Що | Чому не працює |
|---|---|
git log, git blame |
бачать лише завантажені коміти |
git describe (версія з тегу) |
тегу в обрізаній історії немає |
git merge-base, порівняння з main |
спільного предка не завантажено |
git bisect |
немає історії для пошуку |
інструменти, що аналізують зміни від main (лінтер лише змінених файлів) |
немає з чим порівнювати |
Догрузити історію за потреби:
git fetch --depth 50 # поглибити до 50 комітів
git fetch --deepen 100 # ще на 100 глибше
git fetch --unshallow # завантажити всю історію
git fetch --shallow-since=2026-01-01
Пов'язані параметри:
--single-branch- лише одна гілка (з--depthувімкнено автоматично);--no-tags- без тегів.
Для постійної роботи розробника поверхневий клон незручний: багато команд поводяться несподівано, а push з поверхневого клону інколи відхиляється. Якщо проблема в розмірі - краще частковий клон (--filter=blob:none): історія комітів повна, а вміст старих файлів завантажується на вимогу.