Русский ▾ Topics ▾ Latest version ▾ git-archive last updated in 2.46.0

НАЗВАНИЕ

git-archive — Создание архива файлов из указанного дерева

ОБЗОР

git archive [--format=<формат>] [--list] [--prefix=<префикс>/] [<дополнительно>]
	      [-o <файл> | --output=<файл>] [--worktree-attributes]
	      [--remote=<репозиторий> [--exec=<пакет-отправки-архива-git>]] <указатель-дерева>
	      [<путь>…​]

ОПИСАНИЕ

Создаёт архив указанного формата, содержащий структуру дерева для именованного дерева, и записывает его в стандартный вывод. Если указан <префикс>, он добавляется к именам файлов в архиве.

git archive ведёт себя по-разному при получении ID дерева в отличие от ID коммита или ID метки. Когда предоставляется ID дерева, текущее время используется как время изменения каждого файла в архиве. С другой стороны, когда предоставляется ID коммита или ID метки, вместо этого используется время коммита, записанное в объекте-коммите, на который делается ссылка. Кроме того, если используется формат tar, ID коммита сохраняется в глобальном расширенном заголовке pax; его можно извлечь с помощью git get-tar-commit-id. В ZIP-файлах он сохраняется как комментарий к файлу.

ПАРАМЕТРЫ

--format=<fmt>

Формат результирующего архива. Возможные значения: tar, zip, tar.gz, tgz и любой формат, определённый с помощью параметра конфигурации tar.<формат>.command. Если --format не указан, а выходной файл указан, формат определяется по имени файла, если это возможно (например, запись в foo.zip приведёт к тому, что вывод будет в формате zip). В противном случае форматом вывода является tar.

-l
--list

Показать все доступные форматы.

-v
--verbose

Сообщать о ходе выполнения в stderr.

--prefix=<префикс>/

Добавить <префикс>/ к путям в архиве. Может повторяться; для всех отслеживаемых файлов используется самое правое значение. Смотрите ниже, какое значение используется --add-file.

-o <файл>
--output=<file>

Записать архив в <файл> вместо stdout.

--add-file=<файл>

Добавить неотслеживаемый файл в архив. Может повторяться для добавления нескольких файлов. Путь к файлу в архиве формируется путём конкатенации значения последнего параметра --prefix (если есть) перед этим --add-file и базового имени <файл>.

--add-virtual-file=<путь>:<содержимое>

Добавить указанное содержимое в архив. Может повторяться для добавления нескольких файлов.

Аргумент <путь> может начинаться и заканчиваться символом двойной кавычки; содержащееся имя файла интерпретируется как строка в стиле C, т.е. обратная косая черта интерпретируется как escape-символ. Путь должен быть заключён в кавычки, если он содержит двоеточие, чтобы избежать неверной интерпретации двоеточия как разделителя между путём и содержимым, или если путь начинается или заканчивается символом двойной кавычки.

Режим файла ограничен обычным файлом, и параметр может быть подвержен зависящим от платформы ограничениям командной строки. Для нетривиальных случаев запишите неотслеживаемый файл и используйте вместо этого --add-file.

Обратите внимание, что в отличие от --add-file путь, созданный в архиве, не зависит от параметра --prefix, так как в качестве значения параметра можно указать полный <путь>.

--worktree-attributes

Также искать атрибуты в файлах .gitattributes в рабочем каталоге (см. АТРИБУТЫ).

--mtime=<время>

Установить время изменения записей архива. Без этого параметра используется время коммиттера, если <указатель-дерева> является коммитом или меткой, и текущее время, если это дерево.

<extra>

Это могут быть любые параметры, которые понимает внутренний механизм архиватора. Смотрите следующий раздел.

--remote=<repo>

Вместо создания tar-архива из локального репозитория получить tar-архив из внешнего репозитория. Обратите внимание, что внешний репозиторий может накладывать ограничения на то, какие выражения sha1 могут быть разрешены в <указатель-дерева>. Подробности смотрите в git-upload-archive[1].

--exec=<git-upload-archive>

Используется с --remote для указания пути к git-upload-archive на внешней стороне.

<указатель-дерева>

Дерево или коммит, для которого создаётся архив.

<path>

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

ДОПОЛНИТЕЛЬНЫЕ ПАРАМЕТРЫ БЭКЕНДА

zip

-<цифра>

Указать уровень сжатия. Большие значения позволяют команде тратить больше времени на сжатие до меньшего размера. Поддерживаемые значения: от -0 (только сохранение) до -9 (наилучшее соотношение). Если не указано, по умолчанию используется -6.

tar

-<число>

Указать уровень сжатия. Значение будет передано команде сжатия, настроенной в tar.<формат>.command. Список поддерживаемых уровней и уровень по умолчанию, если этот параметр не указан, смотрите в справочной странице настроенной команды.

КОНФИГУРАЦИЯ

tar.umask

Эта переменная может использоваться для ограничения битов разрешений записей tar-архива. Значение по умолчанию — 0002, которое отключает бит записи для остальных (world). Специальное значение «user» указывает, что вместо этого будет использоваться umask пользователя, создающего архив. Подробности смотрите в umask(2). Если используется --remote, то действует только конфигурация внешнего репозитория.

tar.<format>.command

Эта переменная указывает команду оболочки (shell), через которую должен быть передан вывод tar, сгенерированный git archive. Команда выполняется в оболочке с сгенерированным tar-файлом на её стандартном вводе и должна выдавать окончательный вывод на свой стандартный вывод. Любые параметры уровня сжатия будут переданы команде (например, -9).

Форматы tar.gz и tgz определяются автоматически и по умолчанию используют волшебную команду git archive gzip, которая вызывает внутреннюю реализацию gzip.

tar.<format>.remote

Если true, включает формат для использования внешними клиентами через git-upload-archive[1]. По умолчанию false для определяемых пользователем форматов, но true для форматов tar.gz и tgz.

АТРИБУТЫ

export-ignore

Файлы и каталоги с атрибутом export-ignore не будут добавлены в архивные файлы. Подробности смотрите в gitattributes[5].

export-subst

Если для файла установлен атрибут export-subst, Git развернёт несколько меток-заполнителей (placeholders) при добавлении этого файла в архив. Подробности смотрите в gitattributes[5].

Обратите внимание, что по умолчанию атрибуты берутся из файлов .gitattributes в архивируемом дереве. Если вы хотите изменить способ генерации вывода после факта (например, вы сделали коммит без добавления соответствующего export-ignore в его .gitattributes), при необходимости скорректируйте переключённый файл .gitattributes и используйте параметр --worktree-attributes. Кроме того, вы можете хранить необходимые атрибуты, которые должны применяться при архивировании любого дерева, в вашем файле $GIT_DIR/info/attributes.

ПРИМЕРЫ

git archive --format=tar --prefix=junk/ HEAD | (cd /var/tmp/ && tar xf -)

Создать tar-архив, содержащий содержимое последнего коммита в текущей ветке, и извлечь его в каталог /var/tmp/junk.

git archive --format=tar --prefix=git-1.4.0/ v1.4.0 | gzip >git-1.4.0.tar.gz

Создать сжатый tarball для выпуска v1.4.0.

git archive --format=tar.gz --prefix=git-1.4.0/ v1.4.0 >git-1.4.0.tar.gz

То же, что и выше, но с использованием встроенной обработки tar.gz.

git archive --prefix=git-1.4.0/ -o git-1.4.0.tar.gz v1.4.0

То же, что и выше, но формат определяется по выходному файлу.

git archive --format=tar --prefix=git-1.4.0/ v1.4.0^{tree} | gzip >git-1.4.0.tar.gz

Создать сжатый tarball для выпуска v1.4.0, но без глобального расширенного заголовка pax.

git archive --format=zip --prefix=git-docs/ HEAD:Documentation/ > git-1.4.0-docs.zip

Поместить всё из каталога Documentation/ текущей головы (HEAD) в git-1.4.0-docs.zip с префиксом git-docs/.

git archive -o latest.zip HEAD

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

git archive -o latest.tar --prefix=build/ --add-file=configure --prefix= HEAD

Создаёт tar-архив, содержащий содержимое последнего коммита в текущей ветке без префикса и неотслеживаемый файл configure с префиксом build/.

git config tar.tar.xz.command "xz -c"

Настроить формат «tar.xz» для создания tar-файлов, сжатых LZMA. Вы можете использовать его, указав --format=tar.xz или создав выходной файл, например, -o foo.tar.xz.

СМОТРИТЕ ТАКЖЕ

GIT

Является частью пакета git[1]