文档章节

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

阿信sxq
 阿信sxq
发布于 2016/08/25 14:49
字数 510
阅读 168
收藏 0

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

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

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

$ git log --name-only
commit 47f88153de2dc2f48a13908a109b7dca991f8730
Author: 阿信sxq <songxinqiang@vip.qq.com>
Date:   Wed Aug 24 15:15:41 2016 +0800

    为下个版本修改版本号

pom.xml

commit 309632842c80d95f5f316aded1bef538ca8fd99a
Author: 阿信sxq <songxinqiang@vip.qq.com>
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"的文件,解压之后就是所列的文件。

 

© 著作权归作者所有

共有 人打赏支持
阿信sxq

阿信sxq

粉丝 226
博文 82
码字总数 72407
作品 1
成都
后端工程师
私信 提问
行者.孙/updiff

updiff 是什么? updiff 是一个增量更新(升级)的工具,支持备份、更新、异常恢复功能。依据 Git 两个提交版本号提取差异文件进行更新操作。依赖maven、git并可以和jenkins无缝隙集成。 updi...

行者.孙
2015/08/24
0
0
git diff比较不同commit版本的代码文件异同

版权声明:本文为Zhang Phil原创文章,请不要转载! https://blog.csdn.net/zhangphil/article/details/83095778 git diff比较不同commit版本的代码文件异同 如图,假设像知道app目录下的bui...

zhangphil
10/16
0
0
Git使用手册2 —— 基础操作(中)

三、 查看提交历史 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史. 完成这个任务最简单而又有效的工具是 命令。 接下来的例子会用我专门用于演示的 simplegit 项目,...

常大鹏
2016/06/19
0
0
Git常用指令记录

简介 git有漂亮的WEB界面 非常自由的本地commit(不用担心是否影响到他/她人)操作稍微复杂了一点点。 git属于分布式的版本管理工具。每个人都有全部的提交历史。 通过git push 和 git pull...

go-skyblue
2015/12/16
213
0
git常用使用场景总结

git提取出两个版本之间的差异文件并打包 两次提交之间的差异: 两个版本之间的差异: 修复 Bug 流程示例 说明: devv2.0.1 是最新版,devv2.0.2 为当前正在开发的分支 解决bug示例: 如当前开...

风清扬-深圳
2016/08/08
17
0

没有更多内容

加载失败,请刷新页面

加载更多

什么是自然语言处理技术

自然语言处理(NLP)是计算机科学,人工智能,语言学关注计算机和人类(自然)语言之间的相互作用的领域。自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计...

本宫没空2
4分钟前
0
0
移动端关闭虚拟键盘

那么document.activeElement.blur()为什么可以阻止虚拟键盘弹出呢?原因是:当你点击input的时候,document.activeElement获得了DOM中被聚焦的元素,也就是你点击的input,而调用.blur()方法...

niuhongxia
5分钟前
0
0
Ubuntu18.04安装RabbitMQ(正确安装)

1、安装erlang 由于rabbitMq需要erlang语言的支持,在安装rabbitMq之前需要安装erlang sudo apt-get install erlang-nox 2、安装Rabbitmq 更新源 sudo apt-get update 安装 sudo apt-get ins...

hansonwong
14分钟前
0
0
如何在以太坊开发发行自己的ERC-20数字货币

今天我将向你展示如何在以太坊区块链上开发你自己的加密货币并将其出售!我将向你展示如何使用以太坊智能合约逐步创建自己的ERC-20代币和众筹销售,如何测试智能合约,如何将智能合约部署到以...

geek12345
14分钟前
0
0
Vlock用于有多个用户访问控制台的共享 Linux 系统

当你在共享的系统上工作时,你可能不希望其他用户偷窥你的控制台中看你在做什么。如果是这样,我知道有个简单的技巧来锁定自己的会话,同时仍然允许其他用户在其他虚拟控制台上使用该系统。 ...

linuxprobe16
15分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部