我们来diff一下吧

由于我在最近的项目中修改的文件很多,所以在上线前会审查一下自己的代码,和之前的版本diff一下。经过自己的实践,掌握了一点点技巧,给大家分享一下,欢迎吐槽交流。本文将会涉及git命令行工具,Araxis Merge,Github网页diff, SourceTree等工具的diff方法。

�1 .git 命令行工具
当diff的文件只是一个或几个文件时,使用命令行手动diff,直接在命令行敲命令比较方便

  • 查看一个文件的commit历史
git log -- filepath

结果如下,会列出这个文件的最近的修改历史:


我们来diff一下吧_第1张图片
  • 查看一个文件的commit历史和详细的修改内容
git log -p -- filepath

结果如下:


我们来diff一下吧_第2张图片

这个diff方法可以查看最近几次的简单的修改,如果只是查看最近一两次简单的修改�还ok,但如果一个文件首先加入了一些代码,然后这些代码又被多次修改,这是很常见的事情,我们想查看我们从一次提交到另外一次提交到底修改了什么,这个命令就显得不够用了,这时我们使用下一个命令。

  • 查看一个文件的两次commit之间的修改
git diff commit1:filepath commit2:filepath

举例来说,首先我们直接用git log找到我们需要diff的两次提交的commit id,然后找到diff某个文件:

我们来diff一下吧_第3张图片
我们来diff一下吧_第4张图片

这个命令会直接将这两次提交之间的修改diff出来,十分方便。此外,你也可以直接查看这个版本以来这个文件被修改了什么内容:


直接使用分支名或者标签名来代替commit id是可以的,因为git中分支和标签仅仅是指向节点的指针,代表一个节点。

diff命令也可以直接对比两个结点之间的所有文件的修改,然而当修改的文件过多时,这个命令在命令行中感觉并不好用,因为显示的文件太多了,比较乱。

git diff commit1 commit2

查看历史修改内容我一直使用的是Github客户端,用了很久了,感觉拿它来查看文件的修改和提交历史还是挺不错的。下载这个工具请参考:https://desktop.github.com/

2 .Araxis Merge工具
Araxis Merge工具是我在项目对比中使用的最早的对比工具,这个工具可以对比两个文件或两个文件夹,显示的对比界面其实还是比较容易看的,但这个工具只能对比两个文件夹,所以diff之前,我首先需要先把我的项目文件夹copy一�份,然后把两个文件夹拖进Araxis Merge的窗口中,然后它会自动进行diff。我不太喜欢每次diff前copy,让我觉得很麻烦(还有个原因可能是我觉得它界面不fashion?显得比较笨),不过它的树形展示结构还不错,所以这里给出一个效果截图,有兴趣的同学自己下一个玩一玩。

我们来diff一下吧_第5张图片

我们来diff一下吧_第6张图片

3 .github网页diff工具
这个工具我只是在查找这些工具时发现的,主要是对github仓库中的代码进行diff,按照如下格式访问url即可。

http://github.com///compare/[...]

样例请参考:
https://github.com/MRsummer/SmartStore/compare/acc99525ea687dd106863ff318455da48105205f...347196690ff75f2562f151990716914d1bc36f70

结果是一个包含了提交历史记录和修改文件的列表的网页,效果图如下,我只能说相比之前的diff好看很多好嘛-_-||,然而公司的项目并不在github上:


我们来diff一下吧_第7张图片

想要了解github这个工具的更多详情,请参考
https://github.com/blog/612-introducing-github-compare-view

4 .SourceTree
SourceTree是我找到的最好用的diff工具吧,长相虽然不算好看,也不算丑吧。先看看它长什么样子:

我们来diff一下吧_第8张图片

这个软件我才用不久,两个diff方法我挺喜欢的:

  • 查看单个文件的修改历史
    在左下的框框中选中需要diff的文件,呼出菜单,第一个选项叫做查看选中的修改日志,点击进入文件的修改详情列表

    我们来diff一下吧_第9张图片

    然后可以看到对这个文件的修改记录,看起来就像是diff命令行的图形化版本。

  • diff神技
    在上一个界面,Mac按住command键,再选择一行,Oh I'm shocked。

    我们来diff一下吧_第10张图片

    直接显示出了这个文件的两次提交的diff,行数和修改都列的很清楚。感觉还不够方便? 回到提交历史界面,按住command键选择两次提交,直接显示出这两次提交的所有文件的diff,速度相当快。
    我们来diff一下吧_第11张图片

    使用第一方法可以直接review文件,第二种方法可以直接review整个项目,我觉得都是很方便的。SourceTree这个软件也是免费的,官网地址
    https://www.sourcetreeapp.com/

欢迎讨论吐槽!

你可能感兴趣的:(我们来diff一下吧)