git archive命令,可以对任意提交对应的目录树建立归档。
$ git archive -o latest.zip HEAD  基于最新提交建立归档文件latest.zip
$ git archive -o partial.tar HEAD src doc  只把目录src和doc建立到归档partial.tar中
$ git archive --format=zip  tagName | zip > foo-1.0.zip  基于里程碑v1.0建立归档
 
在建立归档时,如果使用树对象ID进行归档,则使用当前时间作为归档中文件的修改时间,而如果使用提交ID或里程碑等,则使用提交建立的时间作为归档中文件的修改时间。
如果使用tar格式建立归档,并且使用提交ID或里程碑ID,还会把提交ID记录在归档文件的文件头中。记录在文件头中的提交ID可以通过git tar-commit-id命令获取。
如果希望在建立归档时忽略某些文件或目录,可以通过为相应文件或目录建立export-ignore属性加以实现。

 

if you want to alse  archive submodule files, you need use  below project .

https://github.com/Kentzo/git-archive-all

1: edit ~/.bashrc , add  to path

2:  git-archive-all --force-submodules lastest.zip