IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    看懂diff命令比较

    mckee发表于 2016-04-04 16:56:19
    love 0

    diff命令是版本管理工具的基础,本文主要讲解diff比较几种方式和git diff使用技巧。
    如下两个文件,file1和file2

    $ cat file1
    aa
    aa
    aa
    aa
    aa
    $ cat file2
    aa
    aa
    bb
    aa
    aa

    1.普通格式diff file1 file2
    $ diff file1 file2
    3c3
    < aa
    ---
    > bb
    

    说明:3c3表示file1的第3行有变化(change),变动为file2的第3行;<表示从file1当中去除该行;---分割file1和file2;>表示file2增加了该行
    2.上下文格式diff -c file1 file2
    $ diff -c file1 file2
    *** file1	2016-04-04 15:56:25.203923276 +0800
    --- file2	2016-04-04 15:56:47.647138613 +0800
    ***************
    *** 1,5 ****
      aa
      aa
    ! aa
      aa
      aa
    --- 1,5 ----
      aa
      aa
    ! bb
      aa
      aa

    说明:
    (1)前两行表示比较文件的基本信息文件名和时间等。"***"表示变动前的文件,"---"表示变动后的文件。
    *** file1	2016-04-04 15:56:25.203923276 +0800
    --- file2	2016-04-04 15:56:47.647138613 +0800

    (2)***************表示将基本信息和变动信息分割开
    (3)*** 1,5 ****表示从第1行开始,联系5行
    (4)如果是感叹号(!),表示该行有改动;如果是减号(-),表示该行被删除;如果是加号(+),表示该行为新增。
    3.合并模式diff -u file1 file2 
    为了解决大量内容重复显示而引入,git就是使用衍生的合并模式
    $ diff -u file1 file2
    --- file1	2016-04-04 15:56:25.203923276 +0800
    +++ file2	2016-04-04 15:56:47.647138613 +0800
    @@ -1,5 +1,5 @@
     aa
     aa
    -aa
    +bb
     aa
     aa

    说明:
    (1)表示文件基本信息,"---"表示变动前的文件,"+++"表示变动后的文件。
    --- file1	2016-04-04 15:56:25.203923276 +0800
    +++ file2	2016-04-04 15:56:47.647138613 +0800

    (2) 变动位置首末用两个@表示,"-1,5"表示第一个文件从第1行开始的连续5行,"+1,5"表示第二个文件从第1行开始的连续5行
    @@ -1,5 +1,5 @@

    (3)变动具体内容,减号表示第一个文件删除的行,加号表示第二个文件新增的.
    看看版本管理工具git diff效果:
    diff --git a/file1 b/file1
    index a57a69a..863575a 100644
    --- a/file1
    +++ b/file1
    @@ -1,5 +1,5 @@
     aa
     aa
    -aa
    +bb
     aa
     aa

    git diff常用比较方法
    git diff #工作区和暂存区比较
    git diff master #工作区和master分支比较
    git diff HEAD #工作区和HEAD比较



沪ICP备19023445号-2号
友情链接