Git 导出某两次提交之间的差异文件

查看差异文件

要导出Git仓库中某两次提交之间的文件差异,必须要先知道有哪些文件发生了差异。git diff指令能很方便的协助我们完成这样的操作。
本次课题中所使用到的git diff指令的用法是git diff COMMIT_ID_1 COMMIT_DI_2,其中的COMMIT_ID_X就是通过git log指令查看到的提交ID。一般情况下,commit_id取前六位就可以了。
以下就是我随便在一个仓库执行以上指令的结果截图:

 

196dbef5339dd1d49287943e367f1d95.png

显然,改指令是可以列出两次提交的具体结果,但是我们只需要那些文件发生改动,并不需要如此具体到行的结果。
经过查阅相关资料,发现--name-only参数可以使得git diff的结果非常简练。

 

4dc6547a930e0a0649ecdfb9d29fceee.png

 

打包

仔细观察git diff --name-only指令的执行结果,这不正是这些文件在根目录中的相对地址嘛?结合xargs指令可以非常快速地将差异文件给打包了。我比较习惯用tar指令进行压缩。
本次执行的指令如下

1

diff -diff --name-only fe76595f 91f2852b | xargs tar -zcvf 20191027diff.tar.gz

 

 

d0c56e1c9cc65d51f1ce5332433aa724.png

 

注意点

  • 执行本打包指令的时候,一定要在项目的根目录中执行,以为不论是在项目目录中的哪个位置,git diff指令输出的文件路径都是相对于项目根目录的,在非项目根目录下执行xargs tar的时候会提示找不到文件;

  • xargs tar指令所打包的文件和当前所在的分支有关。如本次例子中,当前所在分支为master分支的最新提交,那么打包输出的文件版本就是master分支的最新提交版本;

快捷用法

以上的COMMIT_ID_X其实可以用HEAD[1]来代替,比如HEAD表示当前提交,HEAD^表示上一次提交,HEAD^^表示上上次提交,所以我们输出当前和上次提交的差异就可以写成这样git diff --name-only HEAD^ HEAD。其中可以省略后面的HEAD,因为指令会默认拿HEAD^和当前提交作比对;
还有一种写法:HEAD~0表示当前提交,HEAD~1表示上一次提交,HEAD~2表示上上次提交,以此类推。

 

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值