导出发布包是什么
把指定版本打包成压缩文件,内容不含版本库目录,并可用顶层目录参数避免解压污染当前目录。它适合生成发布包与交付物:按标签导出而不是打包工作区,构建产物与发布点一一对应,可以复现。
基本信息
| 用途 | 按提交或标签导出源码包 |
|---|---|
| 格式 | tar、tar.gz、zip,按参数或输出文件名扩展名决定 |
| 顶层目录 | --prefix=app/ 在包内增加一层目录 |
| 排除规则 | 在属性文件里给路径标记导出时忽略,可排除测试与文档 |
| 执行位置 | 可在仓库内执行,也可对支持的远端直接导出 |
典型使用场景
- 生成源码发布包,交付客户或上架到制品库
- 为制品签名与校验提供固定的输入内容
- 按标签导出,用于比较两个版本之间的文件差异
- 导出不含版本库文件的干净源码
- 在流水线里脚本化生成打包文件
常用示例
常用示例
git archive --format=tar.gz -o app-1.2.0.tgz v1.2.0 # 按标签导出压缩包
git archive --format=zip --prefix=app/ HEAD > app.zip # 加顶层目录导出
git archive v1.2.0 | tar -t | head # 先列出内容再决定是否解压
git archive --remote=ssh://git@example.com/srv/git/app.git v1.2.0 > app.tar
tar -tzf app-1.2.0.tgz | wc -l # 核对包内文件数量参数对照
| 参数 | 作用 |
|---|---|
| --format | 指定打包格式,常见 tar、tar.gz、zip |
| --prefix | 在包内增加一层顶层目录 |
| -o 文件 | 写入指定文件而不是标准输出 |
| --remote | 对支持该功能的远端直接导出 |
导出内容不含子模块文件,依赖子模块的项目需要另行处理;交付前先解压核对目录结构,避免上线时才缺文件。
默认只导出指定提交所指向的内容,工作区里尚未提交的改动不会出现在包里,这正是它可复现的原因。
打包后把文件数量与校验值一并留档,交付时与接收方核对,能快速确认传输过程没有损坏或被替换。
导出大仓库时先在列表模式下确认内容,再决定是否解压:一次写出完整包会占用较多磁盘空间。