git archive -o E:/MyWork/WorkDoc/软件项目/云管家-芳子/fangzi_62c58952_f3a7ee2f.zip f3a7ee2f $(git diff --name-only 62c58952 f3a7ee2f)


查看id

首先你得知道版本之间的commit id

git log –pretty=oneline


 $ git log --pretty=oneline

1



差异文件并打包

git diff这个命令能比较两个提交之间的差异,使用–name-only参数可以只显示文件名。由于commit id 太长 一般复制前面7位 就可以了 例如:


$ git diff 61d2112 f3c0f99 --name-only

//后续打包太麻烦 不采用

1

2


git diff列出两个提交之间差异的文件


这个输出结果非常有意思,就是差异文件的相对地址,不正好是压缩命令的参数吗?于是立马使用压缩命令


$ zip update.zip 所有的文件…

就能成功打包了。只是这样的话也太麻烦了吧,幸好linux有提供一个命令xargs能将前一个命令的输出转成另外一个命令的参数,按照这个思路就非常简单了。


$ git diff 61d2112 f3c0f99 --name-only | xargs zip update.zip

1



补充zip 打包解压命令

linux zip命令的基本用法是:

zip [参数] [打包后的文件名] [打包的目录路径]


linux zip命令参数列表:

-a 将文件转成ASCII模式

-F 尝试修复损坏的压缩文件

-h 显示帮助界面

-m 将文件压缩之后,删除源文件

-n 特定字符串 不压缩具有特定字尾字符串的文件

-o 将压缩文件内的所有文件的最新变动时间设为压缩时候的时间

-q 安静模式,在压缩的时候不显示指令的执行过程

-r 将指定的目录下的所有子目录以及文件一起处理

-S 包含系统文件和隐含文件(S是大写)

-t 日期 把压缩文件的最后修改日期设为指定的日期,日期格式为mmddyyyy


举例:说个最常用的吧,打包/opt/abc目录到/opt/abc.zip


# zip -r /opt/abc.zip /opt/abc/    //参数一般只要有-r

1

unzip命令的基本语法是:unzip [参数] zip文件

简单例子:

把本目录下的test.zip文件解压:


unzip test.zip

1

参数列表:

-l 列出压缩文件所包含的内容

-v 显示详细的执行过程

————————————————

版权声明:本文为CSDN博主「bobby1994」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/bestkilly/article/details/52413772


标签: none

添加新评论