Git 归档:如何导出 Git 项目

有时,创建 Git 存储库的归档文件可能很有用。归档文件将多个文件合并为一个文件。然后可以提取归档文件以重现各个文件。Git 在保存历史记录和团队协作方面非常强大,但是,归档文件消除了 Git 元数据的开销,可以更轻松地分发给其他用户或长期保存在冷存储中。

git 归档是做什么的?

git archive 命令是一个 Git 命令行实用程序,它将根据指定的 Git 引用(如提交、分支或树)创建归档文件。git archive 接受额外的参数,这些参数会改变归档输出。

Git 导出示例

下面是一个最基本的 ~git archive~ 示例

git archive --format=tar HEAD

此命令在执行时将从存储库的当前 HEAD 引用创建归档。默认情况下,git archive 会将归档输出流传输到临时的 stdout 流。您需要将此输出流捕获到永久文件中。您可以使用 git archives 输出选项或使用操作系统的 stdout 重定向来指定永久文件。

git archive --output=./example_repo_archive.tar --format=tar HEAD

接下来的示例将创建一个新的归档并将其存储在 example_repo_archive.tar 文件中。前面的示例都创建了未压缩的归档输出。这由 --format=tar 选项表示。格式选项还接受流行的压缩文件格式 ziptar.gz。传递其中一个格式选项将生成压缩归档。如果未传递格式值,则将从传递的任何 --output 选项中推断出该值。

git archive --output=./example_repo_archive.tar.gz --format=tar HEAD ./build

可以通过传递路径参数来创建存储库的部分存档。本示例增加了一个 ./build 路径参数至归档命令。此命令将输出一个仅包含存储在 ./build 目录下文件的归档

选项

前面的示例演示了一些最常用的 git-archive 用例。以下是可以传递给 git-archive 的扩展选项。

--prefix=<prefix>/

前缀选项为归档中的每个文件添加了路径。这有助于确保在唯一的命名空间中提取归档内容。

--remote=<repo>

远程选项需要远程存储库网址。使用远程存储库选项调用时,git-archive 将获取远程存储库并从指定的引用中创建归档(如果该归档在远程上可用)。

配置

~git archive~ 会遵守几个全局 Git 配置值。这些值可以使用 git config 实用程序进行设置。

tar.umask

取消屏蔽配置选项用于指定输出归档文件的 unix 级别权限位限制。

tar.<format>.command

此配置选项允许指定自定义 shell 命令,git-archive 输出将通过该命令运行。这类似于省略 --output 选项,并将 stdout 流从 ~git archive~ 传送到自定义工具。这样可以实现固定的自定义归档后处理。

tar.<format>.remote

如果启用,则允许远程客户端获取类型为 format 的归档。

Git 归档摘要

Git 归档是一个有用的工具,可用于创建 git 存储库的可分发软件包。Git 归档可以定位存储库的特定引用,并且只能打包该引用的内容。Git 归档有几种输出格式,可以利用增加的压缩率。

为您推荐

Bitbucket 博客

DevOps 学习路径

了解有关 Git 的更多信息

在此中心查找更多 Git 指南和资源。