Git功能众多,其中一个重要功能是可以比对文件之间的差异。
举一个常见的例子,如果代码被恶意挂码,如果被挂码文件较大,想找到挂码的地方可能要费一点周折,利用Git的比对功能,则可以非常轻松的找出文件被挂码的位置。git diff命令可实现我们的需求。
一.比较暂存区与工作区之间的差异:
暂存区两个文件的内容如下:[HTML] 纯文本查看 复制代码蚂蚁部落一
以上是readme.txt文件内容。[HTML] 纯文本查看 复制代码antzone
以上是antzone.txt文件内容。
现在工作区对这两个文件分别增加了一行,比对代码如下:[Shell] 纯文本查看 复制代码$ git diff
代码运行效果截图如下:
默认状态下,就是比较暂存区与工作区之间的差别。
关于比对的格式可以参阅git diff 输出格式详解一章节。比对指定文件之间的差异,代码如下:[Shell] 纯文本查看 复制代码$ git diff readme.txt
上面代码仅仅比对暂存区和工作区中readme.txt文件的差异,代码运行效果截图如下:
二.比对指定commit与工作区的文件:
比对分支文件与工作区文件的差异,其实与比对commit提交中的文件与工作区文件差异是一回事,因为分支就是指向某个commit提交的。首先看一下当前提交历史记录,代码如下:[Shell] 纯文本查看 复制代码$ git log --oneline
代码运行效果截图如下:
下面查看一下最后一次提交与工作区文件之间的差异,代码实例如下:[Shell] 纯文本查看 复制代码$ git diff f2303a6 readme.txt
以上代码可以比对f2303a6提交中指定文件与工作区对应文件的差异。
代码运行效果截图如下:
三.比对暂存区与指定提交差异:
前面都是与工作区进行比对,下面介绍一下指定commit提交与暂存区的比对。
代码实例如下:[Shell] 纯文本查看 复制代码$ git diff --cached readme.txt
默认是比对暂存区和最新提交的指定文件。
代码运行效果截图如下:
当然我们可以比对指定提交与暂存区文件差异,代码实例如下:[Shell] 纯文本查看 复制代码$ git diff --cached f2303a6 readme.txt
以上代码可以比对f2303a6提交下readme.txt文件与暂存区下对应文件的差异。