Архив репозитория Git: как экспортировать проект Git
Иногда бывает полезно создать архивный файл репозитория Git. Такой файл объединяет в себе несколько других файлов, которые можно извлечь. В Git есть отличные возможности, позволяющие сохранять подробную историю разработки и вести совместную работу. Однако облегченные архивные файлы не включают метаданные Git, а потому их проще распространять среди пользователей или использовать для долгосрочного, «холодного» хранения.
Для чего нужна команда git archive?
git archive
— это утилита командной строки Git, с помощью которой можно создать архивный файл из указанных ссылок Git, таких как коммиты, ветки или деревья. Команде git archive
можно передавать дополнительные аргументы, чтобы изменить выходные данные архивации.
Примеры экспорта в Git
Ниже приведен самый простой пример с командой ~git archive~
:
git archive --format=tar HEAD
При выполнении этой команды будет создан архив с учетом текущего указателя HEAD
в репозитории. По умолчанию команда git archive
передает выходные данные архивации во временный стандартный поток вывода. Этот поток необходимо записать в постоянный файл. Такой файл можно указать через параметр --output
команды или путем перенаправления стандартного потока вывода в операционной системе.
git archive --output=./example_repo_archive.tar --format=tar HEAD
Связанные материалы
Шпаргалка по Git
СМ. РЕШЕНИЕ
Изучите Git с помощью Bitbucket Cloud
В приведенном выше примере создан новый архив, который затем сохранен в файле exmaple_repo_archive.tar
. В обоих приведенных примерах выходные данные архивации не были сжаты. Это задано параметром --format=tar
. Параметр format также принимает такие популярные сжатые форматы файлов, как zip
и tar.gz
. Передав параметру один из этих форматов, вы получите сжатый архив. Если опустить параметр format, формат данных будет логически выведен из указанного значения параметра --output
.
git archive --output=./example_repo_archive.tar.gz --format=tar HEAD ./build
Чтобы заархивировать часть репозитория, укажите аргумент пути. В последнем примере к команде архивации добавлен аргумент пути ./build
. Благодаря этому при выполнении команды в архив попадут только файлы, находящиеся в каталоге ./build
.
Параметры
В предыдущих примерах рассмотрено несколько самых распространенных сценариев использования git archive
. Следующие параметры, которые может принимать команда git archive
, являются расширенными.
--prefix=<prefix>/
Параметр prefix добавляет путь перед именем каждого файла в архиве. Это полезно в том случае, если нужно извлечь содержимое архива в уникальном пространстве имен.
--remote=<repo>
В параметре remote указывают URL-адрес удаленного репозитория. При вызове команда git archive
с этим параметром получит удаленный репозиторий и создаст архив из указанной в нем ссылки, если она доступна.
Настройка
Существует несколько глобальных значений конфигурации Git, которые позволяют управлять командой ~git archive~. Их можно задать с помощью утилиты git config.
tar.umask
Параметр конфигурации unmask используют, чтобы установить ограничение битов прав доступа Unix для выходного архивного файла.
tar.<format>.command
Этот параметр конфигурации позволяет указать пользовательскую команду оболочки, через которую будет передан вывод команды git archive
. Того же результата можно достичь, опустив параметр --output
и направив стандартный поток вывода ~git archive~ в пользовательский инструмент. Это позволяет выполнить дальнейшую обработку исправленного пользовательского архива.
tar.<format>.remote
Если включить эту переменную, удаленные клиенты смогут получать архивы указанного типа format
.
Сводная информация о git archive
Команда git archive является полезной утилитой для создания распространяемых пакетов с репозиториями Git. Эта команда может выполняться для конкретных ссылок в репозитории и упаковывать только их содержимое. В git archive поддерживается несколько форматов вывода, включая сжатые файлы.
Поделитесь этой статьей
Следующая тема
Рекомендуемые статьи
Добавьте эти ресурсы в закладки, чтобы изучить типы команд DevOps или получать регулярные обновления по DevOps в Atlassian.