git diff
的输出针对代码进行了优化,代码倾向于每行一条语句,而文本可能(如果像我这样的作者太懒而不使用换行符)导致diff输出,这非常难以阅读,而且与阅读diff输出相比,更多的是“Wally在哪里?”搜索
而在GitLab或GitHub的Web前端上突出显示则会立即显示差异
我知道我在比较HTML和纯文本(苹果和桔子),但是应该可以通过使用不同的颜色或在更改周围添加标记字符来改进git diff
输出(JUnit在插入时使用[]
,这不太好读,但这是我的意思的一个例子),这将是第一次,我期望在git的某个地方可以得到的东西,实际上并没有。
4条答案
按热度按时间kuhbmx9i1#
另一个答案中建议的
word-diff
并不是gitlab/github所做的,为了得到同样的效果,你可以使用diff-highlight
脚本distributed with git。1.首先找到
diff-highlight
脚本的路径。它因系统而异,通常不在$PATH中。您可以使用软件包管理器找到它,例如:1.费多拉:
rpm -ql git | grep diff-highlight
dpkg -L git | grep diff-highlight
pacman -Ql git | grep diff-highlight
1.现在,执行以下两个命令,这将向
~/.gitconfig
添加必要的设置:我在这里使用
perl
,而不是直接调用脚本,因为一些发行版,似乎没有设置脚本上的可执行位。我认为这是一个包错误,应该报告。无论如何,这个答案应该工作,无论如何。现在,
log
、diff
、show
命令应逐字显示差异。vltsax252#
另外值得一提的是
diffr
,它是用Rust编写的,使用Myers最长公共子序列算法,与git的diff-highlight
相比,它给出了更好的结果,参见:git的
diff-highlight
:diffr
:安装后,使用它的方法与使用
diff-highlight
的方法类似,因此,例如,执行以下两个命令将diffr
添加到全局配置中:5lhxktic3#
您可以使用
--word-diff[=<mode>]
选项,以便更容易地查看一行中哪些单词发生了更改。显示一个单词差异,使用
<mode>
来分隔更改的单词。默认情况下,单词是用空格分隔的;请参阅下面的--word-diff-regex
。<mode>
默认为普通格式,并且必须是以下内容之一:color
-仅使用颜色突出显示更改的单词。暗示--color
。plain
-将单词显示为[-removed-]
和{+added+}.
如果分隔符出现在输入中,则不尝试转义分隔符,因此输出可能不明确。porcelain
-使用基于行的特殊格式,用于脚本使用。添加/删除/未更改的运行以通常的统一diff格式打印,从行首的+/-/
``字符开始,一直延伸到行尾。输入中的新行在其自己的行上由波浪号~
表示。none
-再次禁用字差异。请注意,不管第一个模式的名称如何,如果启用,则在所有模式中都会使用颜色来加亮更改的零件。
kadbb4594#
Delta是其他答案中后处理工具的现代替代工具。
它具有高度可配置性(emulation modes用于
diff-highlight
和diff-so-fancy
),并且包含许多其他工具中没有的features:并排视图,语法突出显示,以及合并冲突和**git blame
输出**的着色。Delta文档中还有一个overview of related projects,其中提到了一些可以生成类似输出的其他特别工具。