git archive --format=zip HEAD `git diff --diff-filter=ACMR --name-only 旧版本 新版本` > qts.zip
由于git对比出删除的文件,我们可以采取--diff-filter进行过滤;
git diff --diff-filter 可以过滤几种不同的变化:
--diff-filter=[(A|C|D|M|R|T|U|X|B)…[*]]
Added (A), Copied (C), Deleted (D), Modified (M), Renamed (R), have their type (i.e. regular file, symlink, submodule, …) changed (T), are Unmerged (U), are Unknown (X), or have had their pairing Broken (B).
只选择那些添加 (A), 赋值 (C), 删除 (D), 修改 (M), 重命名 (R)的文件, 它们的类型(如 普通文件, 符号链接, 子模块, …) 是否改变 (T), 是否未合并 (U), 是未知 (X), 或它们的对崩溃(B). 任何过滤字符的组合(包括none)均可使用。当组合中包括All或none,如果任一文件匹配了其他选项,就选择了所有路径。如果没有文件匹配其他选项,什么都不做。