设置和配置
获取和创建项目
基本快照
分支与合并
共享和更新项目
检查和比较
打补丁
调试
电子邮件
外部系统
服务器管理
指南
管理
底层命令
- 2.46.1 → 2.50.1 无更改
-
2.46.0
2024-07-29
- 2.43.1 → 2.45.4 无更改
-
2.43.0
2023-11-20
- 2.40.1 → 2.42.4 无更改
-
2.40.0
2023-03-12
- 2.38.1 → 2.39.5 无更改
-
2.38.0
2022-10-02
- 2.37.1 → 2.37.7 无更改
-
2.37.0
2022-06-27
- 2.34.1 → 2.36.6 无更改
-
2.34.0
2021-11-15
- 2.29.1 → 2.33.8 无变更
-
2.29.0
2020-10-19
- 2.1.4 → 2.28.1 无更改
-
2.0.5
2014-12-17
概要
git archive [--format=<fmt>] [--list] [--prefix=<prefix>/] [<extra>] [-o <file> | --output=<file>] [--worktree-attributes] [--remote=<repo> [--exec=<git-upload-archive>]] <tree-ish> [<path>…]
描述
创建指定格式的归档,其中包含指定树的树结构,并将其写入标准输出。如果指定了
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.
<format>.command
定义的任何格式。如果未给出--format
且指定了输出文件,则格式将尽可能从文件名推断(例如,写入foo.zip
会使输出为zip
格式)。否则,输出格式为tar
。 - -l
- --list
-
显示所有可用格式。
- -v
- --verbose
-
向标准错误报告进度。
- --prefix=<prefix>/
-
将
/ 添加到归档中的路径前。可重复使用;其最右边的值用于所有跟踪文件。参见下文,哪个值会被 --add-file
使用。 - -o <file>
- --output=<file>
-
将归档写入
而非标准输出。 - --add-file=<file>
-
将非跟踪文件添加到归档。可重复使用以添加多个文件。文件中归档中的路径通过连接此
--add-file
之前最后一个--prefix
选项的值(如果有)和 <file> 的基本名称来构建。 - --add-virtual-file=<path>:<content>
-
将指定内容添加到归档。可重复使用以添加多个文件。
<path> 参数可以以字面双引号字符开头和结尾;包含的文件名被解释为C风格字符串,即反斜杠被解释为转义字符。如果路径包含冒号,则必须加引号,以避免冒号被误解为路径和内容之间的分隔符,或者如果路径以双引号字符开头或结尾。
文件模式仅限于常规文件,并且该选项可能受平台相关的命令行限制。对于非平凡情况,请写入一个未跟踪文件并改用
--add-file
。请注意,与
--add-file
不同,在归档中创建的路径不受--prefix
选项的影响,因为可以提供完整的 <path> 作为选项的值。 - --worktree-attributes
-
同时也在工作树中的 .gitattributes 文件中查找属性(参见 ATTRIBUTES)。
- --mtime=<time>
-
设置归档条目的修改时间。如果没有此选项,如果 <tree-ish> 是提交或标签,则使用提交者时间;如果是树,则使用当前时间。
- <extra>
-
这可以是归档器后端理解的任何选项。参见下一节。
- --remote=<repo>
-
从本地仓库创建tar归档,改为从远程仓库获取tar归档。请注意,远程仓库可能会对 <tree-ish> 中允许的sha1表达式施加限制。详情请参见 git-upload-archive[1]。
- --exec=<git-upload-archive>
-
与 --remote 结合使用,指定远程端的 git-upload-archive 路径。
- <tree-ish>
-
要为其生成归档的树或提交。
- <path>
-
如果没有可选的路径参数,则当前工作目录的所有文件和子目录都将被包含在归档中。如果指定了一个或多个路径,则只包含这些路径。
配置
- tar.umask
-
此变量可用于限制tar归档条目的权限位。默认值为0002,这关闭了全局写入位。特殊值“user”表示将改用归档用户的umask。详情请参见 umask(2)。如果使用
--remote
,则只有远程仓库的配置生效。 - tar.<format>.command
-
此变量指定一个shell命令,
git
archive
生成的tar输出应通过此命令进行管道传输。该命令使用shell执行,生成的tar文件作为其标准输入,并在其标准输出上产生最终输出。任何压缩级别选项都将传递给该命令(例如,-9
)。tar.gz
和tgz
格式自动定义,默认使用特殊命令git
archive
gzip
,它调用 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
-
为 v1.4.0 版本创建一个压缩的tarball。
- 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
-
为 v1.4.0 版本创建一个压缩的tarball,但不包含全局扩展 pax 头。
- git archive --format=zip --prefix=git-docs/ HEAD:Documentation/ > git-1.4.0-docs.zip
-
将当前 HEAD 的 Documentation/ 目录中的所有内容放入 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”格式以创建LZMA压缩的tar文件。您可以使用
--format=tar.xz
来指定它,或者通过创建像-o
foo.tar.xz
这样的输出文件来使用它。