是通过 git archive
加 git diff
两个命令一起使用实现的
# 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),复制(C),删除(D),修改(M),重命令(R)。
旧提交sha1或者标签: d1c51cc
或者 0.0.1
新提交sha1或者标签: e033003
或者 0.0.2
References
- git 命令行生成补丁包用于开源软件的更新
- 使用 TORTOISE GIT 制作历史版本的更新包 PATCH
- git根据版本进行导出改动的文件
- git scm git diff 在网站右上角的输入框输入
git diff
和git archive
就可以搜索到对应命令的文档。