git archive 命令
git archive 命令用于将 Git 仓库中特定的提交或分支的内容导出成一个归档文件(如 .zip 或 .tar 格式),而不会包含 Git 版本控制的元数据。这样你可以快速打包某个版本的项目文件,便于发布、备份或分发。
它适合用来导出项目的某个快照,比如发布代码包,或者提供给不使用 Git 的用户。
命令语法
git archive [选项] <commit> [<路径>...]
参数 <commit> 可以是分支名、标签名或提交 ID。同时你也可以指定导出的路径,来只归档部分文件或目录。
常用选项参数
-o <文件名>:将归档结果输出到指定文件,而不是默认输出到标准输出。--format=<格式>:指定归档格式,常见格式有tar(默认)、zip、tar.gz等。--prefix=<前缀>/:为归档内的所有文件加上路径前缀,通常用于解压后统一放在一个文件夹里。--worktree-attributes:使用工作区的.gitattributes文件中的导出设置。--list:列出支持的归档格式。
使用示例
将当前 main 分支的最新内容打包为 project.zip:
git archive -o project.zip --format=zip main
将某个标签版本 v1.0 导出成一个 .tar 归档,并为文件加上前缀目录 project-v1.0/:
git archive --format=tar --prefix=project-v1.0/ v1.0 > v1.0.tar
导出当前 HEAD 的某个子目录 src,生成压缩包 src.zip:
git archive -o src.zip --format=zip HEAD src
查看 Git 支持的归档格式:
git archive --list
小贴士
git archive只打包文件内容,不包含.git目录及版本历史,适合发布纯净代码包。- 结合
.gitattributes文件的export-ignore属性,可以排除不需要打包的文件,如测试目录或文档。 - 归档文件可以方便地传递给不使用 Git 的同事或部署环境。