保存git版本差异文件并保留目录结构

时间:2023-02-02 12:21:06

解释一下,我是想实现这么一个功能,比如发现2018-03-01到2018-03-05之间的提交导致了Android系统出现问题。但是具体哪个git仓库出的问题不清楚,需要分析这段时间都改了啥,需要你把这段时间的修改都导出来。

第一步,生成diff文件

git diff --before:2018-03-05 --after:2018-03-01 > issue.diff

利用repo命令实现在每一个仓库中都执行此命令

repo forall -c "git diff --before:2018-03-05 --after:2018-03-01 > issue.diff"

第二步,连带目录结构一起复制到另外一个文件夹

find  ./ -name issue.diff -exec cp -rp --parents {}  ../issue \;

好了,两条命令下来,我们就可以愉快的把 issue文件夹打包发给别人来处理啦。

知识点
1. git diff 的重定向和时间限制操作
2. repo forall -c 可以在各个仓库都执行此命令
3. find命令中的-exec参数,是一条命令,以\;结尾,{}表示find寻找出来的文件
4. cp命令的–parent参数,可以把目录结构跟着一起复制过去。