有时候,我们要比较当前最新的commit与之前(比如已经发行的某个版本)的某个commit之间的差异,可能中间经过了多次commit之后,如果一个个去翻看的话,会比较难以判断。
其实我们想比较两者之间的“最终”差异,
可以在git命令行中用下面的方法来实现。
指令:
diff <SHA1> <SHA2> -- *.{c,h} > <比较结果输出文件路径>
各项参数解释:
SHA1:旧的commit
SHA2:新的commit
-- *.{c,h} :仅仅比较c和h文件,其他的不比较(花括号中的内容可以随意修改),否则如果二进制文件如.hex文件加入比较过程,会导致diff文件非常庞大不便阅读。有时候commit中存在一些二进制文件比如word文档之类,这个选项尤其重要。
> <输出文件路径>
:将结果放到一个文件中以方便慢慢查看。如果没有这个选项,则将直接显示在命令行窗口。
实例:
首先拿到要比较的两个commit的commit id,即SHA。在Git桌面端,右键点击某个commit即可。
假如准备将比较结果输出到D盘下的d.diff文件,形成指令:
git diff
109233ef8a2f45c9c75f5f6c84e7aa3c47dfff56
24d43b8d4bdc1efc74b9e0ccdd9ed3e04c1b8034
-- *.{c,h} > /
d/d.diff
在Git中打开bash:
键入指令:
找到这个输出文件,建议用notpad++来查看,因为它可以提供颜色显示(将自动识别.diff这个专用文件名,自动显示颜色)。