前言
在项目开发部署中,通常是将一个Git项目全量打包发布,但有的场景只需要导出有变更的那部分文件,增量发布,此时就需要使用Git导出增量包了。本文主要使用到git archive导出命令和git diff比较命令。
1、导出最后一次提交修改过的文件
git archive -o filepath/filename.zip HEAD $(git diff --name-only HEAD^)
例:git archive -o ../updated.zip HEAD $(git diff --name-only HEAD^)
2、导出两次提交之间修改过的文件
git archive -o .filepath/filename.zip NEW_COMMIT_ID $(git diff --name-only OLD_COMMIT_ID NEW_COMMIT_ID)
例:git archive -o ../latest.zip 81131159 $(git diff --name-only a54ff521 81131159)
3、文件名有中文时,git diff 中文会转码显示
例:git diff HEAD^ HEAD --name-only
test/2021/01/\345\210\206\346\224\225\206\265\368\210\210\224\257\350.txt
test/2021/01/\345\210\206\346\224\257\346\265\213\350\257\225.txt
git diff接受的编码格式为utf-8,而文件名是以gb2312格式编写的,所以git diff会转码显示。
解决方法:执行以下命令,修改core.quotepath配置:
git config --global core.quotepath false
core.quotepath设为false的话,就不会对编码大于0x80的字符进行转码,中文即可正常显示。