git增量更新打包

有两种方法,都使用了git diff的命令特性

一、使用管道命令进行打包

git diff 5fa8cc3140b4 10c5ff6bd05c –name-only | xargs tar -zcvf update.tar.gz

git diff出两个版本之间变化的文件,然后用管道命令,对他们进行打包

二、使用git archive命令进行导出

git archive -o update.tar.gz HEAD $(git diff 5fa8cc3140b4 10c5ff6bd05c –name-only )

特殊说明,如果两个版本之间有删除文件的操作,哪么两条命令都会出错,因为对应的文件找不到,这个时需要用到git diff的–diff-filter 参数,把删除的文件排除掉

所以以上两条命令会是

git diff –diff-filter=ACMR 5fa8cc3140b4 10c5ff6bd05c –name-only | xargs tar -zcvf update.tar.gz

git archive -o update.tar.gz HEAD $(git diff –diff-filter=ACMR 5fa8cc3140b4 10c5ff6bd05c –name-only )