Git archive 命令

优雅地使用 git 提取特定版本的压缩包。

总有一些时候需要你把最新的版本或者某个历史版本打包,再使用 scp,邮件甚至 QQ 等方式分发出去。如果手动打包,不但复杂,容易用错命令,另外对于版本库没有跟踪的文件也是一个负担,打出来的包不干净。其实 git 提供了解决方案。

这时候只需要

1
git archive -o [文件名] [commit对象]

举个例子

1
git archive -o ../new.tar.gz HEAD

如此操作最新的 commit 就出现在工作目录上一层之中了。当然 tar, zip 这两种常用格式也受到支持。使用如下命令

1
git archive --list

可以查看受支持的后缀类型。git 会根据文件后缀生成正确的格式。若不指定 -o 选项,tar 格式文件内容会输出到 stdout,方便进行管道操作(不过这种场景不多吧)

题外话:git 提供的命令非常丰富,能覆盖很多日常会想到的需求。对于日常熟练的 git 用户,不妨有空读一读手册,探索一下诸如 blame submodule gc 等等命令。