设置和配置
获取和创建项目
基本快照
分支和合并
共享和更新项目
检查和比较
补丁
调试
外部系统
服务器管理
指南
管理
底层命令
- 2.46.1 → 2.49.0 没有更改
-
2.46.0
2024-07-29
- 2.43.1 → 2.45.3 没有更改
-
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
SYNOPSIS
git archive [--format=<fmt>] [--list] [--prefix=<prefix>/] [<extra>] [-o <file> | --output=<file>] [--worktree-attributes] [--remote=<repo> [--exec=<git-upload-archive>]] <tree-ish> [<path>…]
DESCRIPTION
创建指定格式的归档文件,其中包含指定树的树结构,并将其写入标准输出。 如果指定了 <prefix>,它将添加到归档文件中的文件名前面。
当给定树 ID 而不是提交 ID 或标记 ID 时,git archive 的行为会有所不同。 当提供树 ID 时,当前时间用作归档文件中每个文件的修改时间。 另一方面,当提供提交 ID 或标记 ID 时,将改用引用提交对象中记录的提交时间。 此外,如果使用 tar 格式,则提交 ID 存储在全局扩展 pax 标头中; 可以使用 git get-tar-commit-id 提取它。 在 ZIP 文件中,它存储为文件注释。
OPTIONS
- --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
使用哪个值。 - -o <file>
- --output=<file>
-
将归档文件写入 <file> 而不是 stdout。
- --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>
-
如果没有可选的 path 参数,则当前工作目录的所有文件和子目录都包含在归档文件中。 如果指定了一个或多个路径,则仅包含这些路径。
配置
- tar.umask
-
此变量可用于限制 tar 归档文件条目的权限位。 默认值为 0002,它关闭了世界写入位。 特殊值 "user" 表示将改用归档用户的 umask。 有关详细信息,请参见 umask(2)。 如果使用
--remote
,则只有远程存储库的配置生效。 - tar.<format>.command
-
此变量指定一个 shell 命令,通过该命令应管道传输
git archive
生成的 tar 输出。 该命令使用 shell 执行,并将生成的 tar 文件作为标准输入,并应在其标准输出上生成最终输出。 任何压缩级别选项都将传递给该命令(例如,-9
)。tar.gz
和tgz
格式是自动定义的,默认情况下使用 magic 命令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 header。
-
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 归档文件,其中包含当前分支上最新提交的内容,没有前缀,以及带有前缀 *build/* 的未跟踪文件 *configure*。
-
git config tar.tar.xz.command "xz -c"
-
配置一个 "tar.xz" 格式,用于创建 LZMA 压缩的 tar 文件。您可以使用
--format=tar.xz
指定它,或者通过创建像-o foo.tar.xz
这样的输出文件来指定它。
GIT
属于 git[1] 套件的一部分