git根据标签或者commit进行导出改动的文件

是通过 git archivegit diff 两个命令一起使用实现的

1
2
3
4
#  develop 分支
git archive --format=zip -o ./update.zip develop $(git diff --name-only d1c51cc e033003)
# HEAD 当前分支
git archive --format=zip -o ./update.zip HEAD $(git diff --name-only --diff-filter=AMR d1c51cc e033003)

git archive 使用的参数说明:

--format=<fmt>::

归档结果的文件格式: tar 或者 zip。如果这个参数没有提供并且输出文件名称已经指定,格式会尽可能从文件名称中推测出来(e.g. 填入 "foo.zip" 使输出格式为 zip 格式)。否则输出格式是 tar。

-o <file>::
--output=<file>::

将归档文件写入到 <file> 中,以此替代标准输出设备。

-l::
--list::
列出所有有效的格式。

-v::
--verbose::

汇报进度到标准错误输出设备。

develop分支和 HEAD 目前我使用的效果是一样的,因为HEAD的分支的sha1 commit和develop分支的sha1 commit是一样的。

git diff 使用的参数说明:

--name-only::

只显示被修改的文件名称

--diff-filter=[(A|C|D|M|R|T|U|X|B)…​[*]]

只选择文件被 添加(A),复制©,删除(D),修改(M),重命令®。

旧提交sha1或者标签: d1c51cc 或者 0.0.1
新提交sha1或者标签: e033003 或者 0.0.2

References