Архив репозитория 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.
Блог Bitbucket
Образовательные программы DevOps