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