美文网首页
我们来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一下吧

    由于我在最近的项目中修改的文件很多,所以在上线前会审查一下自己的代码,和之前的版本diff一下。经过自己的实践,掌...

  • Git之不明觉厉2-本地操作

    通过实战我们多看看一些命令吧。 GIT DIFF DIFF的简单使用 我们修改一下《Git之不明觉厉1》中的文件《...

  • React基础3--diff算法

    本来想深入说一下virtual dom 与diff,但是最近很忙,就简单聊聊react的diff算法吧。 diff...

  • 我们来学习一下 “学习” 吧

    (我在第10期师北宸21天写作营当组长 ②) 小组里的小伙伴@克总发糖 推荐了《学习观05:思维导图原理:人生与高...

  • GIT--基础知识02

    一,查看改动 (git diff) 执行 git diff 来查看执行git status的结果的详细信息 git...

  • diff了解一下

      emm会用react,咱都知道react用virtual dom的形式解耦了视图层级和代码的交互操作。  既然...

  • 心疼你,我们来休息一下吧。

    这一路上走走停停... ...十几年的路走下来,不算长,不过也勉强够拿来说到。进过局子,逃过课,飙过车子,下过河,...

  • Git 命令生成 diff 文件

    git diff 生成 diff 文件

  • 来我们谈一下离职的想法吧!

    说起离职的想法,好友之间像是找到了共鸣一样,难道所有的老板都一样?! 老板和员工立场是不一样呢,怎么可能想到一起去...

  • 我们来关心一下美国大选吧~

    As political theatre, America’s party conventions have no...

网友评论

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

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