Git中打包文件是个简单的活,不管是打包全部文件作为release,还是只压缩更改的文件,一个命令就能搞定。而且,打包之后目录结构完全不变,这对于覆盖部署来说极其方便。 1 打包所有文件打包master分支的所有文件: [quote] $ git archive --format=zip--output master.zipmaster [/quote] 其中,输出格式为zip,输出文件为master.zip。 git支持zip和tar两种输出格式。 打包当前分支当前HEAD的所有文件: [quote] $ git archive --format=zip--output head.zipHEAD [/quote] 打包v1.2标签的所有文件: [quote] $ git archive --format=zip--output v1.2.zipv1.22 [/quote] 打包更改的文件打包更改文件的原理是:用git diff找出文件列表;用打包命令打包。也就是说,只要能用找出文件列表,就可以git打包出来。 2.1 打包最后修改的文件先通过git diff找到最新版本修改过的文件,再压缩打包这些文件:[quote] $ git archive --format=zip -o update.zip HEAD $(git diff --name-only HEAD^) [/quote] 2.2 打包最后两个版本修改的文件总共也是2个版本:[quote] $ git archive --format=zip -o update.zip HEAD $(git diff --name-only HEAD~2) [/quote] 2.3 打包两个分支之间差别的文件[quote] $ git archive --format=zip -o update.zip HEAD $(git diff --name-only master fix-error) [/quote] 如上,打包master和fix-error分支差异的文件。 2.4 打包并忽略某个文件或文件夹忽略wxapp文件夹[quote] git diff --name-only a4fe39ecf6 45cef8305c --name-only | xargs tar -zcvf diff.tar.gz --exclude=wxapp [/quote] 2.5 简单一点的git tar打包[quote] git diff --name-only a4fe39ecf6 45cef8305c --name-only | xargs tar -cvf diff.tar --exclude=wxapp [/quote] [pre] git archive --format zip --output /path/to/file.zip master # 将 master 以zip格式打包到指定文件 [/pre] [pre] git archive v0.1 | gzip > site.tgz git archive master > /home/hainuo/fds.zip [/pre] [pre] git archive develop $( git diff v1.1.8_beta13..v1.1.8_beta14 --name-only)|gzip >aaa.zip #比较两个版本之间的差异文件,生成一个差异文件压缩包 [/pre] 作者:1624667daae9 链接:https://www.jianshu.com/p/1c2ddcb9d0b5 來源:简书 简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。