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


380

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

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

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

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


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: Ограничения (больше не текущие): мелкий репозиторий имеет ряд ограничений (вы не можете клонировать или извлекать из него, ни толкать из него, ни в него), но достаточно, если вас интересует только недавняя история большого Проект с длинной историей, и хотел бы отправить исправления в виде исправлений.
Одино - Велмонт


79

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

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

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


4
Это решение не будет удовлетворять этому требованию: «Я хочу иметь возможность обновляться до новых ревизий из удаленного проекта». Поскольку он в основном загружает архив, он не сможет быстро продвинуть коммит или два. «Мелкий клон» позволяет это. Тем не менее, я думаю, что это решение имеет свои варианты использования, поэтому стоит упомянуть.
Василий Новиков
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.