默认的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是商业软件,但是易用性真的非常诱人!

【参考】

https://blog.csdn.net/azhong148/article/details/87736788 git diff 比较文件的工具 DiffMerge 安装配置使用

https://www.jianshu.com/p/ec0da9b08b52 设置git diff用beyond compare工具比较

Git差异并列显示的更多相关文章

  1. 解决 git 中文路径显示 unicode 代码的问题

    解决 git 中文路径显示 unicode 代码的问题 当被修改的文件中带有中文字符时,中文字符会被转换为 unicode 代码,看不出原来的文件名. 这时,只要配置 :: git config -- ...

  2. git log友好显示

    查看commit 提交日志 $ git log $git log --pretty=oneline $git reflog 显示所有提交记录,包括已经回退的提交,如图:提交了abc 和 bb 然后回退 ...

  3. Windows下Git中正确显示中文的设置方法

    Windows下Git中正确显示中文的设置方法 具体设置方法如下: 进入目录etc:$ cd /etc 1. 编辑 gitconfig 文件:$ vi gitconfig.在其中增加如下内容: [gu ...

  4. [转载]centos 6.4中git如何正常显示中文

    FROM: http://ju.outofmemory.cn/entry/63250 系统版本:centos 6.4 git版本:1.7.1,使用yum直接安装的. 当使用git status查看时, ...

  5. Git文件不显示图标/标识

    初次使用Git服务功能,做了很多探路事情,记录下刚刚遇到的问题 情况:安装了Git应用程序,或者也安装了TortoiseGit-1.8.16.0-64bit(类似SVN工具)后,上传下载文件没有问题, ...

  6. Git差异比对

    一. 查看变更还未载入(changed but unstaged,当前没有add 的内容)的文件比对: 只需运行不带任何参数的'git diff'命令即可 二. 查看载入(stage,即已经add)而 ...

  7. Git diff结果显示分析

    1.diff的三种格式: 正常格式(normal diff) 上下文格式(context diff) 合并格式(unified diff) 2.示例文件为了便于讲解,先新建两个示例文件.第一个文件叫做 ...

  8. git branch 不显示的原因

    转自:https://blog.csdn.net/qq_39671159/article/details/81261049 必须使用git init命令创建仓库,执行git add . 和git co ...

  9. 解决Win10 Git图标不显示问题

    升级系统到win10 1803版本以后发现TortoiseGit的忽略图标不显示了 开始以为是版本问题,将TortoiseGit版本进行了升级还是不行 网上查找以后发现 Windows Explore ...

随机推荐

  1. 如何利用 JuiceFS 的性能工具做文件系统分析和调优

    JuiceFS 是一款面向云原生环境设计的高性能 POSIX 文件系统,在 AGPL v3.0 开源协议下发布.作为一个云上的分布式文件系统,任何存入 JuiceFS 的数据都会按照一定规则拆分成数据 ...

  2. springboot和mybatis集成

    springboot和mybatis集成 pom  <?xml version="1.0" encoding="UTF-8"?> <proje ...

  3. Codeforces 710F - String Set Queries(AC 自动机)

    题面传送门 题意:强制在线的 AC 自动机. \(n,\sum|s|\leq 3\times 10^5\) 如果不是强制在线那此题就是道 sb 题,加了强制在线就不那么 sb 了. 这里介绍两种做法: ...

  4. NFLSOJ #917 -「lych_cys模拟题2018」橘子树(树剖+ODT+莫反统计贡献的思想+动态开点线段树)

    题面传送门 sb 出题人不在题面里写 \(b_i=0\) 导致我挂成零蛋/fn/fn 首先考虑树链剖分将路径问题转化为序列上的问题,因此下文中简称"位置 \(i\)"表示 DFS ...

  5. 一类巧妙利用利用失配树的序列DP

    I.导入 求长度为\(\text{len}\)的包含给定连续子串\(\text{T}\)的 0/1 串的个数.(\(|T|<=15\)) 通常来说这种题目应该立刻联想到状压 DP 与取反集--这 ...

  6. Nginx 编译 echo 模块

    Nginx  编译 echo 模块 echo模块下载地址:https://github.com/openresty/echo-nginx-module 查看nginx已经编译的模块, nginx -V ...

  7. nginx_location

    Nginx location 配置语法 1. location [ = | ~ | ~* | ^~ ] uri { ... } 2. location @name { ... } location 配 ...

  8. android listview展示图片

    最近学习android开发,感触颇多,和网站开发对比,还是有很大的差距,在这里记录一下. android listview展示图片 在网站开发上,展示图片非常简单,一个HTML img标签就搞定,加上 ...

  9. A Child's History of England.32

    And so, in darkness and in prison, many years, he thought of all his past life, of the time he had w ...

  10. Qt5的安装和编译

    Ubuntu18.04安装Qt5 1.配置unbuntu 和宿主机共享文件夹安装vmware-tools 2.下载 Qt  http://download.qt.io/archive/qt/ 3.修改 ...