git查看两次提交之间的差异_使用git命令提取两次提交之间的差异文件

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

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

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

$ git log --name-only

commit 47f88153de2dc2f48a13908a109b7dca991f8730

Author: 阿信sxq

Date: Wed Aug 24 15:15:41 2016 +0800

为下个版本修改版本号

pom.xml

commit 309632842c80d95f5f316aded1bef538ca8fd99a

Author: 阿信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-only

pom.xml

src/main/java/cn/songxinqiang/tool/ConfFileUtil.java

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

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

$ git diff 2362accf3e7be23e30 47f88153de2dc2f48a1 --name-only | xargs tar -zcvf diff.tar.gz

pom.xml

src/main/java/cn/songxinqiang/tool/ConfFileUtil.java

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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值