git diff
的输出是针对代码进行优化的,代码倾向于每行一条语句,而文本(如果像我这样的作者懒得使用换行符)会导致差异输出,这很难阅读,更像是“Wally在哪里?”搜索而不是读取diff输出
而在GitLab或GitHub的web前端所做的突出显示则立即显示了不同之处
我知道我在比较HTML和纯文本(苹果和桔子),但是应该可以通过使用不同的颜色或在更改前后添加标记字符来改进git diff
输出(JUnit在插入时使用[]
,这并不好读,但这是我所指的一个例子),而且这将是我第一次希望在git中有一些实际上不是很好的东西。
发布于 2018-03-14 07:15:22
您可以使用--word-diff[=<mode>]
选项来更容易地查看一行中哪些单词发生了变化。这在手册页中描述为
显示一个word diff,使用
<mode>
分隔已更改的单词。默认情况下,单词由空格分隔;参见下面的--word-diff-regex
。<mode>
默认为平原,并且必须是下列之一:
color
-只使用颜色高亮显示更改的单词。暗示着--color
。plain
-将单词显示为[-removed-]
和{+added+}.
,如果它们出现在输入中,则不会试图转义分隔符,因此输出可能是不明确的。porcelain
--使用一种特殊的基于行的格式,用于脚本的使用.添加/删除/未更改的运行以通常统一的diff格式打印,从行开头的+/-/` `
字符开始,延伸到行尾。输入中的新行由自己的行上的倾斜~
表示。none
-再次禁用word diff。请注意,尽管第一种模式的名称,颜色是用来高亮显示所有模式中更改的部分,如果启用的话。
发布于 2019-04-28 06:28:18
另一个答案中提到的word-diff
并不完全是gitlab/github所做的。为了获得同样的效果,您可以使用diff-highlight
脚本,即用git分发。
diff-highlight
脚本的路径。它在不同的系统中有所不同,而且通常不在$PATH中。您可以在包管理器中找到它,例如:1. Fedora: `rpm -ql git | grep diff-highlight`
2. Debian/Ubuntu/Mint: `dpkg -L git | grep diff-highlight`
3. Archlinux: `pacman -Ql git | grep diff-highlight`
~/.gitconfig
,并向[pager]
部分添加以下页面# diff (替代路径)-突出显示由git提供的脚本,该脚本逐字显示diff日志= perl /usr/share/git/diff-高亮/diff-突出显示较少的显示= perl /usr/share/git/diff-突出显示减少diff= perl /usr/share/git/diff-高亮/diff-突出显示更少。
我在这里使用perl
,而不是直接调用脚本,因为某些发行版似乎没有在脚本上设置可执行位。海事组织,这是一个包裹错误,应该报告。无论如何,这个答案应该是有效的,而忽略了这一点。现在,log
、diff
、show
命令应该逐字显示不同的内容.截图:
发布于 2019-09-29 11:19:20
同样值得一提的是diffr
。它是用Rust编写的,使用了Myers最长的公共子序列算法。与git的diff-highlight
相比,它提供了更好的结果,参见:
git的diff-highlight
diffr
安装后,使用它类似于diff-highlight
,即编辑~/..gitconfig,并添加到[pager]
部分如下:
[pager]
log = diffr | less
show = diffr | less
diff = diffr | less
https://stackoverflow.com/questions/49278577
复制相似问题