博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用git命令提取两次提交之间的差异文件
阅读量:7078 次
发布时间:2019-06-28

本文共 1141 字,大约阅读时间需要 3 分钟。

hot3.png

git本身是有tags功能的,在不同的tag之间切换是非常方便的,但是现在有一个需求就是:需要找出两次提交(有前后关系的)之间的差异文件,这一般用在需要增量升级的系统中。

找了一下,似乎没有直接的命令可以达到这个目的,只好曲线救国了,幸亏找到了方法!

git的日志查看功能,可以看到每次提交的ID

$ git log --name-onlycommit 47f88153de2dc2f48a13908a109b7dca991f8730Author: 阿信sxq 
Date: Wed Aug 24 15:15:41 2016 +0800 为下个版本修改版本号pom.xmlcommit 309632842c80d95f5f316aded1bef538ca8fd99aAuthor: 阿信sxq
Date: Wed Aug 24 14:53:13 2016 +0800 删除多余的注释src/main/java/cn/songxinqiang/tool/ConfFileUtil.java

拿到了ID就可以定位每一次的提交。

突破点就在git diff命令,查看差异,这个命令有很多参数样式,我们这里需要的是查看两次提交之间的差异文件,但是我们不关心文件内容,只关心文件名及路径,所以我们这样做

$ git diff 2362accf3e7be23e30  47f88153de2dc2f48a1 --name-onlypom.xmlsrc/main/java/cn/songxinqiang/tool/ConfFileUtil.java

于是就可以看到两次提交之间的变化文件了。这里需要说明的是,diff后面的两个ID,前一个是开始的ID后一个是结束的ID,在这两次(包含结束不包含开始)之间的变动文件就会列表出来。

拿到了文件的路径列表,接下来就好办了,配合xargs命令我们简单点,直接打包出来

$ git diff 2362accf3e7be23e30  47f88153de2dc2f48a1 --name-only | xargs tar -zcvf diff.tar.gzpom.xmlsrc/main/java/cn/songxinqiang/tool/ConfFileUtil.java

这个命令需要在仓库的根路径执行,因为给出的文件路径是基于根路径的,打包命令根据需要修改,也可以使用cp命令进行,这个命令执行后产生了一个叫做"diff.tar.gz"的文件,解压之后就是所列的文件。

 

转载于:https://my.oschina.net/songxinqiang/blog/737753

你可能感兴趣的文章
路由重分发
查看>>
cocos prigressBar
查看>>
apache+php+mysql
查看>>
我的友情链接
查看>>
多线程之(CountDownLatch)
查看>>
iftop监控网卡,ip流量
查看>>
机器学习 - 回归分析
查看>>
MySQL(七)之多表查询
查看>>
File创建文件
查看>>
Mysql关键字冲突的解决方案
查看>>
asp.net开发3层架构 每一层作用
查看>>
1、VMware中CentOS6.5启动出现An error occurred during the file system check
查看>>
php 微信开发模式小结
查看>>
Cacti模板制作
查看>>
linux 系统配置文件总结
查看>>
日常工作中的监控项都有哪些?
查看>>
翻身的废鱼——论PHP从入门到放弃需要多久?11
查看>>
3、Android构建仪表测试
查看>>
【Android】自定义ListView的Adapter报空指针异常解决方法
查看>>
djangoORM之查询
查看>>