• Git差异并列显示


    默认的git diff命令只会将文件的修改差异使用“+”,“-”符号标注出来,并不直观。
    最理想的方式应该是使用诸如“DiffMerge”这样的对比工具将原始文件和修改后的文件左右并列显示,这样就能从全局上非常明显地看出哪里是修改的,哪里是删除的。
    遗憾的是Git本身并没有自带这样的对比工具,但是它支持使用外部对比工具来达到这个目的,参考:How do I view 'git diff' output with my preferred diff tool/ viewer?
    另外,还有一些第三方工具也支持并列对比显示。

    DiffMerge

    配置Git使用DiffMerge作为Diff工具。

    在.gitconfig文件中添加如下配置:

    [diff]
        tool = diffmerge
    
    [difftool "diffmerge"]
        cmd = 'C:/Program Files/SourceGear/Common/DiffMerge/sgdm.exe' \"$LOCAL\" \"$REMOTE\"	
    
    [difftool]
    	prompt = false
    

    保存文件,执行git config --global --list查看具体配置信息:

    diff.tool=diffmerge
    difftool.diffmerge.cmd='C:/Program Files/SourceGear/Common/DiffMerge/sgdm.exe' "$LOCAL" "$REMOTE"
    difftool.prompt=false
    

    到Git仓库目录下执行git difftool命令即可打开DiffMerge界面,查看当前修改过的文件差异对比。
    不完美的是,每次只能查看一个文件的差异对比。如果同时有多个文件存在改动,会针对每一个文件依次打开一次DiffMerge窗口(关闭当前DiffMerge窗口之后会立即打开一个新的DiffMerge窗口)。

    使用这种方式还可以配置其他外部Diff工具进行文件差异对比,如:Meld,Beyond Compare等等。

    Icdiff

    icdiff是一个在命令下可以实现文件左右并列对比的工具,需要独立安装,详见:https://github.com/jeffkaufman/icdiff

    安装icdiff:

    pip install https://github.com/jeffkaufman/icdiff.git
    

    如果无法直接通过pip安装,可以下载icdiff源码进行安装。

    tar xvf icdiff-release-2.0.4.tar.gz
    cd icdiff-release-2.0.4
    python setup.py build
    python setup.py install
    

    在.gitconfig文件中添加如下配置:

    [icdiff]
    	options = --highlight --line-numbers
    

    保存文件,执行git config --global --list查看具体配置信息:

    icdiff.options=--highlight --line-numbers
    

    到Git仓库目录下执行git icdiff命令即可展示左右并列的文件差异对比,从上到下依次展示每一个有改动的文件对比信息。
    值得注意的是:icdiff并不会展示文件的全部信息,只会展示有差异的一段数据,但是这样也比原生的git diff命令直观了许多。
    可以说,icdiff是命令行下使用Git diff的不二选择!

    webdiff

    webdiff也是一个独立的差异对比的工具,与Icdiff不同的是,webdiff是通过打开一个浏览器页面来展示文件差异的,也是一种图形化的展示方式,详见:https://github.com/danvk/webdiff
    另外,webdiff会把当前所有改动的文件列表展示出来,只要单击选择指定文件就可以通过左右并列的方式查看该文件的差异对比了,这一点比通过DiffMerge对比更加友好。

    安装webdiff:

    pip install webdiff
    

    安装好webdiff之后无需做任何配置,直接到Git仓库目录下执行git webdiff命令即可打开一个浏览器页面,在该页面中会列出当前有改动的文件列表。
    遗憾的是,我在Windows 10环境使用webdiff时总是提示“read-error”错误(无法读取需要对比的文件),暂时还不知道具体原因。

    SmartGit

    SmartGit是一个非常高级的工具,它已经集成了Git,文件diff只是其中的一部分很小的功能,详见:https://www.syntevo.com/smartgit/
    SmartGit的diff功能非常直观,会列出当前所有改动的文件列表,只需要点击某一个文件就能以左右并列的方式查看该文件的修改差异,而且展示的是文件的全部信息,能从全局上知道文件的改动位置。
    SmartGit是商业软件,但是易用性真的非常诱人!

    Git Extensions

    Git Extensions也是一个值得尝试的工具,它虽然没有并排显示差异的功能,但是会列出修改过的文件列表,选择指定文件就能查看该文件的改动。
    另外,在查看指定文件差异时,可以选择“显示整个文件”,这样也能非常直观地知道文件改动的具体位置。
    Git Extensions
    下载地址:https://github.com/gitextensions/gitextensions

    【参考】
    https://blog.csdn.net/azhong148/article/details/87736788 git diff 比较文件的工具 DiffMerge 安装配置使用
    https://www.jianshu.com/p/ec0da9b08b52 设置git diff用beyond compare工具比较


    作者:编程随笔
    出处:http://www.cnblogs.com/nuccch/
    声明:本文版权归作者和博客园共有,欢迎转载,但请在文章页面明显位置给出原文连接。

  • 相关阅读:
    AI:IPPR的数学表示-CNN稀疏结构进化(Mobile、xception、Shuffle、SE、Dilated、Deformable)
    基于视觉的机械手控制
    远程图形界面:VncServer与KDE桌面远程连接
    远程图形界面:使用putty+xmin远程登录ubuntu-kde
    CUDA 显存操作:CUDA支持的C++11
    C++11:using 的各种作用
    C++ 模板template和template
    Detectron:Pytorch-Caffe2-Detectron的一些跟进
    TF实战:(Mask R-CNN原理介绍与代码实现)-Chapter-8
    The type javax.servlet.http.HttpServletRequest cannot be resolved.
  • 原文地址:https://www.cnblogs.com/nuccch/p/15720552.html
Copyright © 2020-2023  润新知