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

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

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

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

Возможно ли это в git?

3 ответа

Использовать --depth вариант в git clone:

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

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

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

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

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

В наши дни в большинстве случаев не рекомендуются мелкие клоны .

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

Если вы хотите загружать меньше данных, в общем случае лучше использовать частичные клоны:

      git clone --filter=tree:0 <url>

Это все равно загрузит историю коммитов, но не будет загружать деревья файлов и содержимое файлов для предыдущих коммитов. Получение в апстрим-коммиты по-прежнему будет дешевым.

Другие вопросы по тегам