10.9 文件归档

如果使用压缩工具(tar、7zip、winzip、rar等)将工作区文件归档,一不小心会把版本库(.git目录)包含其中,甚至将工作区中的忽略文件、临时文件也包含其中。Git提供了一个归档命令:git archive,可以对任意提交对应的目录树建立归档。示例如下:

基于最新提交建立归档文件latest.zip。


$git archive-o latest.zip HEAD


只将目录src和doc建立到归档partial.tar中。


$git archive-o partial.tar HEAD src doc


基于里程碑v1.0建立归档,并且为归档中的文件添加目录前缀1.0。


$git archive—format=tar—prefix=1.0/v1.0|gzip>foo-1.0.tar.gz


在建立归档时,如果使用树对象ID进行归档,则使用当前时间作为归档中文件的修改时间,而如果使用提交ID或里程碑等,则使用提交建立的时间作为归档中文件的修改时间。

如果使用tar格式建立归档,并且使用提交ID或里程碑ID,还会把提交ID记录在归档文件的文件头中。记录在文件头中的提交ID可以通过git tar-commit-id命令获取。

如果希望在建立归档时忽略某些文件或目录,可以通过为相应文件或目录建立export-ignore属性加以实现。具体参见本书第8篇第41章“41.1属性”一节。