是通過 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
就可以搜索到對應命令的文檔。