Kar*_*ter 4 git highlighting git-diff highlight
git diff针对代码的输出进行了优化,该代码往往每行仅一个语句,而文本(如果像我这样的作者太懒了而无法使用换行符)会导致diff输出,这很难阅读,并且更多地是“ Wally在哪里?” 搜索比读取差异输出
而在GitLab或GitHub的Web前端上突出显示则立即显示出差异
我知道我正在比较HTML和纯文本(苹果和橘子),但是应该可以git diff通过使用不同的颜色或在更改周围添加标记字符来改善输出(JUnit []在插入周围使用,这对阅读,但我的意思是一个例子),这将是我第一次期望git中某些可用的东西实际上不是。
Hi-*_*gel 16
另外值得一提的是diffr。它是用 Rust 编写的,并使用 Myers 最长公共子序列算法。与 git 相比,diff-highlight它提供了更好的结果,请参阅:
吉特的diff-highlight:
diffr:
安装后,使用方法与 类似diff-highlight,即编辑~/.gitconfig,并添加到以下[pager]部分:
[pager]
log = diffr | less
show = diffr | less
diff = diffr | less
Run Code Online (Sandbox Code Playgroud)
您可以使用该--word-diff[=<mode>]选项更轻松地查看一行中的哪些单词发生了变化。这在手册页中描述为
显示单词差异,使用
<mode>来分隔更改的单词。默认情况下,单词由空格分隔;见--word-diff-regex下文。将<mode>默认为平纹,并且必须是以下之一:
color- 仅使用颜色突出显示更改的单词。暗示--color。
plain– 将单词显示为[-removed-]和{+added+}.如果分隔符出现在输入中,则不尝试对其进行转义,因此输出可能不明确。
porcelain– 使用专门用于脚本使用的基于行的特殊格式。添加/删除/未更改的运行以通常的统一差异格式打印,从行首的+/-/` `字符开始并延伸到行尾。输入中~的换行符由一行中的波浪号表示。
none– 再次禁用 word diff。请注意,尽管第一个模式的名称,如果启用,颜色将用于突出显示所有模式中更改的部分。
将word-diff在对方的回答表明不完全gitlab / github上做什么。为了获得相同的效果,可以使用git分发的diff-highlight脚本。
首先,您必须在git安装中列出文件,然后找到的路径diff-highlight。它因系统而异,通常不在$ PATH中。例如在我的Archlinux上/usr/share/git/diff-highlight/diff-highlight,但是在Fedora上 /usr/share/git-core/contrib/diff-highlight。
然后,编辑〜/ .gitconfig,并将其添加到以下[pager]部分:
[pager]
# diff-highlight is script provided by git that shows word-by-word diff
log = /usr/share/git/diff-highlight/diff-highlight | less
show = /usr/share/git/diff-highlight/diff-highlight | less
diff = /usr/share/git/diff-highlight/diff-highlight | less
Run Code Online (Sandbox Code Playgroud)
现在log,diff,show命令应该表现出的差异字的字。屏幕截图: