Используя git, чтобы получить только последнюю версию

380

Я хочу отслеживать проект, который использует git. Я не хочу клонировать полный репозиторий и полную историю, я просто хочу самую последнюю ревизию и хочу иметь возможность обновляться до новых ревизий из удаленного проекта.

Я попытался использовать git clone, но при этом создается копия всего хранилища (огромный размер файла), а отслеживание изменений делает дисковое пространство еще больше (100 МБ файлов теперь занимает более 2 ГБ).

Я не собираюсь отправлять патчи, и мне не нужна история. Я просто хочу последнюю версию, как в Subversion.

Это возможно в git?

yuit
источник
2
Git 1.9 / 2.0 (первый квартал 2014 года) будет гораздо эффективнее с мелким клонированием: stackoverflow.com/a/21217267/6309 и stackoverflow.com/a/21217326/6309
VonC

Ответы:

552

Используйте --depthопцию в git clone:

Создайте неглубокий клон с историей, усеченной до указанного количества коммитов.

пример: git clone --depth=1 <remote_repo_url>

Грег Хьюгилл
источник
87
Например:git clone --depth=1 <remote_repo_url>
iDev247
14
Так как commit 82fba2b в git 1.9, эти ограничения больше не существуют.
niutech
1
Какие ограничения?
Незнакомец
4
@Triangles: Ограничения (больше не текущие): мелкий репозиторий имеет ряд ограничений (вы не можете клонировать или извлекать из него, ни толкать из него, ни в него), но достаточно, если вас интересует только недавняя история большого Проект с длинной историей, и хотел бы отправить исправления в виде исправлений.
Одино - Велмонт
1
Опция была добавлена ​​вgit 1.8.4 .
ivan_pozdeev
79

Альтернативное решение для выполнения мелкого clone ( git clone --depth=1 <URL>) было бы, если удаленная сторона поддерживает это, использовать --remoteопцию git archive :

$ git archive --format=tar --remote=<repository URL> HEAD | tar xf -

Или, если рассматриваемый удаленный репозиторий доступен для просмотра с помощью какого-либо веб-интерфейса, такого как gitweb или GitHub, есть вероятность, что он имеет функцию «моментального снимка», и вы можете загрузить последнюю версию (без информации о версиях) из веб-интерфейса.

Якуб Наребски
источник
4
Это решение не будет удовлетворять этому требованию: «Я хочу иметь возможность обновляться до новых ревизий из удаленного проекта». Поскольку он в основном загружает архив, он не сможет быстро продвинуть коммит или два. «Мелкий клон» позволяет это. Тем не менее, я думаю, что это решение имеет свои варианты использования, поэтому стоит упомянуть.
Василий Новиков