git-archive
Имя
git-archive — создание архива файлов из указанного дерева
Сводка
git archive [--format=<fmt>] [--list] [--prefix=<prefix>/] [<extra>]
[-o <file> | --output=<file>] [--worktree-attributes]
[--remote=<repo> [--exec=<git-upload-archive>]] <tree-ish>
[<path>…] Описание
Создаёт архив указанного формата, содержащий структуру дерева для указанного дерева, и записывает его в стандартный вывод. Если указан <prefix>, он добавляется перед именами файлов в архиве.
git archive ведёт себя по-разному в зависимости от того, передан ли ему идентификатор дерева, идентификатор коммита или идентификатор тега. Если указан идентификатор дерева, в качестве времени изменения каждого файла в архиве используется текущее время. Если же указан идентификатор коммита или тега, используется время коммита, записанное в соответствующем объекте коммита. Кроме того, при использовании формата tar идентификатор коммита сохраняется в глобальном расширенном заголовке pax; его можно извлечь с помощью git get-tar-commit-id. В ZIP-файлах он сохраняется как комментарий к файлу.
Параметры
- --format=<fmt>
-
Формат получаемого архива. Возможные значения:
tar,zip,tar.gz,tgz, а также любой формат, определённый с помощью параметра конфигурацииtar.<format>.command. Если параметр--formatне указан, а выходной файл задан, формат по возможности определяется по имени файла (например, запись вfoo.zipприводит к тому, что вывод будет в форматеzip). В противном случае используется формат выводаtar. - -l
- --list
-
Показать все доступные форматы.
- -v
- --verbose
-
Выводить сведения о ходе выполнения в stderr.
- --prefix=<prefix>/
-
Добавить <prefix>/ перед путями в архиве. Параметр можно указывать несколько раз; для всех отслеживаемых файлов используется его последнее значение. Ниже описано, какое значение используется командой
--add-file.Значение <prefix> используется как задано и не нормализуется. Оно может включать начальные косые черты или компоненты родительских каталогов (например,
../). Некоторые программы для работы с архивами могут считать такие пути потенциально небезопасными и изменять их или выдавать предупреждение при распаковке. - -o <file>
- --output=<file>
-
Записать архив в <file> вместо stdout.
- --add-file=<file>
-
Добавить в архив неотслеживаемый файл. Параметр можно указывать несколько раз, чтобы добавить несколько файлов. Путь файла в архиве формируется объединением значения последнего параметра
--prefix(если он есть), указанного перед этим параметром--add-file, и базового имени <file>. - --add-virtual-file=<path>:<content>
-
Добавить указанное содержимое в архив. Параметр можно указывать несколько раз, чтобы добавить несколько файлов.
Аргумент <path> может начинаться и заканчиваться символом двойной кавычки; содержащиеся в нём имя файла интерпретируется как строка в стиле C, то есть обратная косая черта интерпретируется как символ экранирования. Путь необходимо заключить в кавычки, если он содержит двоеточие, чтобы двоеточие не было ошибочно принято за разделитель между путём и содержимым, или если путь начинается либо заканчивается символом двойной кавычки.
Режим файла ограничен обычным файлом; кроме того, на параметр могут распространяться ограничения командной строки, зависящие от платформы. В нетривиальных случаях создайте неотслеживаемый файл и вместо этого используйте
--add-file.Обратите внимание: в отличие от
--add-file, путь, создаваемый в архиве, не зависит от параметра--prefix, поскольку в качестве значения параметра можно указать полный путь <path>. - --worktree-attributes
-
Также искать атрибуты в файлах .gitattributes рабочего дерева (см. раздел АТРИБУТЫ).
- --mtime=<time>
-
Задать время изменения записей архива. Без этого параметра используется время коммиттера, если <tree-ish> является коммитом или тегом, и текущее время, если это дерево.
- <extra>
-
Любые дополнительные параметры, поддерживаемые серверной частью архиватора. См. следующий раздел.
- --remote=<repo>
-
Вместо создания tar-архива из локального репозитория получить tar-архив из удалённого репозитория. Обратите внимание, что удалённый репозиторий может ограничивать допустимые выражения sha1 для <tree-ish>. Подробности см. в git-upload-archive[1].
- --exec=<git-upload-archive>
-
Используется вместе с --remote, чтобы указать путь к
git-upload-archiveна удалённой стороне. - <tree-ish>
-
Дерево или коммит, для которого нужно создать архив.
- <path>
-
Если необязательный параметр path не указан, в архив включаются все файлы и подкаталоги текущего рабочего каталога. Если указан один или несколько путей, включаются только они.
Дополнительные параметры серверной части
zip
- -<digit>
-
Указать уровень сжатия. Чем больше значение, тем больше времени команда может потратить на сжатие для уменьшения размера. Поддерживаются значения от
-0(только сохранение без сжатия) до-9(наилучшее сжатие). Если параметр не указан, по умолчанию используется-6.
tar
- -<number>
-
Указать уровень сжатия. Значение будет передано команде сжатия, настроенной в
tar.<format>.command. Список поддерживаемых уровней и уровень по умолчанию, используемый, если этот параметр не указан, см. на странице руководства настроенной команды.
Конфигурация
- tar.umask
-
Эта переменная позволяет ограничить биты прав доступа записей tar-архива. По умолчанию используется 0002, который отключает право записи для всех пользователей. Специальное значение "user" указывает, что вместо него будет использоваться umask пользователя, создающего архив. Подробности см. в umask(2). Если используется
--remote, действует только конфигурация удалённого репозитория. - tar.<format>.command
-
Эта переменная задаёт команду оболочки, через которую следует передавать вывод tar, созданный командой
gitarchive. Команда выполняется оболочкой; сгенерированный файл tar передаётся ей через стандартный ввод, а окончательный результат она должна вывести в стандартный вывод. Команде передаются все параметры уровня сжатия (например,-9).Форматы
tar.gzиtgzопределяются автоматически и по умолчанию используют специальную командуgitarchivegzip, которая вызывает встроенную реализацию gzip. - tar.<format>.remote
-
Если значение равно true, включает формат для использования удалёнными клиентами через git-upload-archive[1]. Для форматов, определённых пользователем, по умолчанию имеет значение false, а для форматов
tar.gzиtgz— true.
Атрибуты
- export-ignore
-
Файлы и каталоги с атрибутом export-ignore не добавляются в архивы. Подробности см. в gitattributes[5].
- export-subst
-
Если для файла установлен атрибут export-subst, Git подставляет значения вместо нескольких заполнителей при добавлении этого файла в архив. Подробности см. в gitattributes[5].
Обратите внимание: по умолчанию атрибуты берутся из файлов .gitattributes в архивируемом дереве. Если после этого нужно изменить способ формирования вывода (например, вы создали коммит, не добавив в его .gitattributes необходимый атрибут export-ignore), при необходимости измените файл .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
-
Создать сжатый tar-архив для выпуска v1.4.0.
- git archive --format=tar.gz --prefix=git-1.4.0/ v1.4.0 >git-1.4.0.tar.gz
-
То же, что и выше, но с использованием встроенной обработки tar.gz.
-
gitarchive--prefix=git-1.4.0/-ogit-1.4.0.tar.gzv1.4.0 -
То же, что и выше, но формат определяется по выходному файлу.
- git archive --format=tar --prefix=git-1.4.0/ v1.4.0^{tree} | gzip >git-1.4.0.tar.gz
-
Создать сжатый tar-архив для выпуска 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/. -
gitarchive-olatest.zipHEAD -
Создать ZIP-архив, содержащий содержимое последнего коммита текущей ветки. Обратите внимание: формат вывода определяется по расширению выходного файла.
-
gitarchive-olatest.tar--prefix=build/--add-file=configure--prefix=HEAD -
Создаёт tar-архив, содержащий содержимое последнего коммита текущей ветки без префикса, а также неотслеживаемый файл
configureс префиксомbuild/. -
gitconfigtar.tar.xz.command"xz-c" -
Настроить формат "tar.xz" для создания tar-файлов, сжатых с помощью LZMA. Его можно использовать, указав
--format=tar.xz, или создав выходной файл, например-ofoo.tar.xz.
См. также
archive
© 2005–2026 Linus Torvalds and others
Licensed under the GNU General Public License version 2.
https://git-scm.com/docs/git-archive