美文网首页Git
Git 导出某两次提交之间的差异文件

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

作者: 聪了个颖 | 来源:发表于2017-07-25 00:49 被阅读0次

查看差异文件

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

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

打包

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

git diff --name-only 7f1caef cc011f5 | xargs tar -zcvf /d/a.tar.gz

查看D盘目录,确实生成了a.tar.gz文件,里面的目录结构和项目的结构保持一致,并且只包含差异文件,如下图所示。

生成的差异文件压缩包

注意点

  • 执行本打包指令的时候,一定要在项目的根目录中执行,以为不论是在项目目录中的哪个位置,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表示上上次提交,以此类推。


  1. 关于Git中的HEAD定义,《Git版本控制管理中》是这样描述的:「HEAD始终指向当前分支的最近提交。当切换分支时,HEAD会更新为指向新分支的最新提交」。

相关文章

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

    查看差异文件 要导出Git仓库中某两次提交之间的文件差异,必须要先知道有哪些文件发生了差异。git diff指令能...

  • git 使用笔记(持续更新)

    基本业务场景处理 1. 使用git查看比较两次提交的差异,仅查看变化的文件: 2. 使用git比较两次提交的差异:...

  • Git历史记录

    git diff:输出工作区与暂存区之间的差异 git diff --cached:查看工作区与历史提交之间的差异

  • GIT基本命令汇总

    GIT提交记录的导出命令 下面命令format是导出格式。后边是导出到哪里的,什么文件,也可以导出excel

  • Git导出最近提交文件内容

    在使用git的过程中,存在需要导出某个提交历史的文件记录的情况,首先使用git log查看提交的commit id...

  • Git分支

    一: 分支的简介 git保存的不是文件的变化或者差异,而是一系列文件的快照。 1.提交 在提交的时候,git会保存...

  • 什么是分支

    之前说过,Git 保存的不是文件差异或者变化量,而是一系列文件快照。 在Git中提交时,会保存一个提交(commi...

  • Git 分支总结

    Git 分支总结 描述: Git 保存的不是文件差异或者变化量,而只是一系列文件快照。 在 Git 中提交时,会保...

  • Git log + 多仓库push

    导出最近五次git 提交的不同点git log -p -5 >> 路径.aa.txt .git隐藏文件中 找到co...

  • git导出有差异的文件列表

    把分支之间有差异的文件打包导出,类似svn的导出变化文件功能。 如,导出fedoc.zip压缩包,其内容为test...

网友评论

    本文标题:Git 导出某两次提交之间的差异文件

    本文链接:https://www.haomeiwen.com/subject/tmbikxtx.html