参数细节
--format=<fmt>:指定归档文件的格式,可以是tar或zip。如果未指定此选项且指定了输出文件,则根据文件名推断格式;否则,默认为tar。-l,--list:显示所有可用的格式。-v,--verbose:将进度报告到标准错误。--prefix=<prefix>/:在归档文件中每个文件名前添加<prefix>/。-o <file>,--output=<file>:将归档写入<file>,而不是标准输出。--worktree-attributes:在工作树中的.gitattributes文件中查找属性。<extra>:这是归档后端可以理解的任何选项。对于zip后端,使用-0可以存储文件而不压缩它们,而-1到-9可以用于调整压缩速度和比例。--remote=<repo>:从远程仓库<repo>获取 tar 归档文件,而不是从本地仓库获取。--exec=<git-upload-archive>:与--remote一起使用,指定远程<git-upload-archive>的路径。<tree-ish>:用于生成归档文件的树或提交。<path>:如果没有可选参数,当前工作目录中的所有文件和目录都将包含在归档文件中。如果指定了一个或多个路径,则仅包含这些路径。
34.1 创建 Git 仓库的归档文件
使用 git archive 可以创建仓库的压缩归档文件,例如用于分发发行版。
创建当前 HEAD 版本的 tar 归档文件:
git archive --format tar HEAD | cat > archive-HEAD.tar
创建当前 HEAD 版本的 tar 归档文件,并使用 gzip 压缩:
git archive --format tar HEAD | gzip > archive-HEAD.tar.gz
这也可以通过以下方式完成(这将使用内置的 tar.gz 处理):
git archive --format tar.gz HEAD > archive-HEAD.tar.gz
创建当前 HEAD 版本的 zip 归档文件:
git archive --format zip HEAD > archive-HEAD.zip
也可以仅指定带有有效扩展名的输出文件,格式和压缩类型将从扩展名推断:
git archive --output=archive-HEAD.tar.gz HEAD
34.2 带目录前缀创建 Git 仓库的归档文件
在创建 Git 归档文件时使用前缀是一种良好的实践,这样在解压缩时所有文件都会位于一个目录内。要创建带有目录前缀的 HEAD 归档文件:
git archive --output=archive-HEAD.zip --prefix=src-directory-name HEAD
解压缩后,所有文件都会在当前目录中名为 src-directory-name 的目录内。
34.3 基于特定分支、修订版本、标签或目录创建 Git 仓库的归档文件
也可以创建除 HEAD 以外的其他项目的归档文件,例如分支、提交、标签和目录。
创建本地分支 dev 的归档文件:
git archive --output=archive-dev.zip --prefix=src-directory-name dev
创建远程分支 origin/dev 的归档文件:
git archive --output=archive-dev.zip --prefix=src-directory-name origin/dev
创建标签 v.01 的归档文件:
git archive --output=archive-v.01.zip --prefix=src-directory-name v.01
创建特定子目录(sub-dir)中 HEAD 修订版本的文件的归档文件:
git archive --output=archive-sub-dir.zip --prefix=src-directory-name HEAD:sub-dir/