美文网首页
我们来diff一下吧

我们来diff一下吧

作者: summer朱光文 | 来源:发表于2015-10-27 11:48 被阅读4628次

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

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

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

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


    • 查看一个文件的commit历史和详细的修改内容
    git log -p -- filepath
    

    结果如下:


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

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

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


    这个命令会直接将这两次提交之间的修改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?显得比较笨),不过它的树形展示结构还不错,所以这里给出一个效果截图,有兴趣的同学自己下一个玩一玩。


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

    http://github.com/<USER>/<REPO>/compare/[<START>...]<END>
    

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

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


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

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

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

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


      然后可以看到对这个文件的修改记录,看起来就像是diff命令行的图形化版本。
    • diff神技
      在上一个界面,Mac按住command键,再选择一行,Oh I'm shocked。


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

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

    欢迎讨论吐槽!

    相关文章

      网友评论

          本文标题:我们来diff一下吧

          本文链接:https://www.haomeiwen.com/subject/lnyxhttx.html