git-archive

    git-archive - 从命名树创建文件存档

    概要

    描述

    创建包含指定树的树结构的指定格式的存档,并将其写入标准输出。如果<前缀>指定它被添加到存档中的文件名前面。

    git archive 在给定树ID时与给定提交ID或标记ID时的行为不同。在第一种情况下,当前时间用作存档中每个文件的修改时间。在后一种情况下,使用引用的提交对象中记录的提交时间。另外,如果使用tar格式,则提交ID存储在全局扩展pax头中;它可以使用 git get-tar-commit-id 提取。在ZIP文件中,它存储为文件注释。

    生成的存档的格式: tarzip 。如果未给出此选项,并且指定了输出文件,则尽可能从文件名推断格式(例如,写入“foo.zip”使输出为zip格式)。否则输出格式为tar

      1. --list

      显示所有可用格式。

      1. -v
      1. --verbose

      向stderr报告进度。

      1. --prefix=<prefix>/

      将<前缀> /前置到存档中的每个文件名。

      1. -o <file>
      1. --output=<file>

      将存档写入< file>而不是stdout。

      1. --worktree-attributes

      在工作树中查找.gitattributes文件中的属性(参见 )。

      这可以是归档后端理解的任何选项。见下一节。

      1. --remote=<repo>
      1. --exec=<git-upload-archive>

      与—remote一起使用以指定远程端的 git-upload-archive 的路径。

      1. <tree-ish>

      树或承诺为其生成存档。

      如果没有可选的路径参数,则当前工作目录的所有文件和子目录都将包含在存档中。如果指定了一个或多个路径,则仅包括这些路径。

      备用额外选项

      1. -0

      存储文件而不是缩小文件。

        最高和最慢的压缩级别。您可以指定1到9之间的任意数字来调整压缩速度和比率。

        组态

        1. tar.umask

        此变量可用于限制tar存档条目的权限位。默认值为0002,关闭世界写入位。特殊值“user”表示将使用归档用户的umask。有关详细信息,请参阅umask(2)。如果使用--remote,则只有远程存储库的配置生效。

        1. tar.<format>.command

        此变量指定一个shell命令,通过该命令管道git archive生成的tar输出。该命令是使用shell在其标准输入上生成的tar文件执行的,并应在其标准输出上生成最终输出。任何压缩级选项都将传递给命令(例如,“ - 9”)。如果没有给出其他格式,则与&lt;format&gt;具有相同扩展名的输出文件将使用此格式。

        “tar.gz”和“tgz”格式是自动定义的,默认为gzip -cn。您可以使用自定义命令覆盖它们。

        1. tar.<format>.remote

        如果为true,则启用&lt;format&gt;以供远程客户端通过 git-upload-archive [1] 使用。对于用户定义的格式,默认为false,但对于“tar.gz”和“tgz”格式,则为true。

        具有export-ignore属性的文件和目录不会添加到存档文件中。有关详细信息,请参阅 。

        1. export-subst

        请注意,默认情况下,属性取自正在归档的树中的.gitattributes文件。如果您想调整事后生成输出的方式(例如,您在.gitattributes中未添加适当的export-ignore而提交),请根据需要调整签出的文件并使用--worktree-attributes选项。或者,您可以在归档$GIT_DIR/info/attributes文件中的任何树时保留应该应用的必要属性。

        例子

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

        创建一个tar存档,其中包含当前分支上最新提交的内容,并将其解压缩到/var/tmp/junk目录中。

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

        为v1.4.0版本创建压缩的tarball。

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

        与上面相同,但使用内置的tar.gz处理。

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

        与上面相同,但是从输出文件中推断出格式。

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

        为v1.4.0发行版创建压缩的tarball,但没有全局扩展的pax标头。

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

        将当前头文档/目录中的所有内容放入 git-1.4.0-docs.zip ,前缀为 git-docs /

        1. git archive -o latest.zip HEAD

        创建一个Zip存档,其中包含当前分支上最新提交的内容。请注意,输出格式是由输出文件的扩展名推断的。

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

        配置“tar.xz”格式以生成LZMA压缩的tarfiles。您可以使用它指定--format=tar.xz,或创建类似-o foo.tar.xz的输出文件。

        也可以看看

        gitattributes [5]