git导出有差异的文件列表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git导出有差异的文件列表相关的知识,希望对你有一定的参考价值。

参考技术A

如,导出fedoc.zip压缩包,其内容为test与master分支对比发生变化的内容:
git archive test $(git diff master --name-only)|gzip >1.zip(执行指令时应在test分支)
注意:只适合修改的文件,如果文件有增删就会有问题。

比如某次提交与当前checkout出来的HEAD之间的差异都打印出来:
git diff --name-only aee3668 HEAD
结合xargs命令压缩
git diff --name-only aee3668 HEAD | xargs tar -zcvf 1.tar.gz

git diff --name-only aee3668 HEAD -- /H5/ \':!spec\'
git diff --name-only aee3668 HEAD -X /H5/

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

参考技术A

要导出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 指令的执行结果,这不正是这些文件 在根目录中的相对地址 嘛?结合 xargs 指令可以非常快速地将差异文件给打包了。我比较习惯用 tar 指令进行压缩。
本次执行的指令如下

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

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

以上是关于git导出有差异的文件列表的主要内容,如果未能解决你的问题,请参考以下文章

DevOps使用教程 华为云(17)git 比较2个分支 某个具体文件的差异

抑制 git 中已删除文件的差异

git使用指南

Git起步

Git 基础

在 Git 中仅导出具有文件夹结构的修改和添加的文件