Git:从diff中的行中删除前导加号/减号

时间:2015-02-16 22:33:04

标签: git git-diff

我的问题很简单,但我没有找到答案。

我想删除git diff中每行的前导加号/减号。在你问我为什么要这样做之前,请允许我概述一下我的理由:

  1. 正好是80个字符的行将被一个字符溢出,这看起来很简单
  2. 着色足以让我区分添加/删除
  3. 我希望将我的终端窗口宽度保持在80个字符(而不是任意81个字符),以保持与我在终端中所做的其他事情的一致性(git之外)
  4. 这样做有一些配置选项吗?如果没有,我怎么能以一种仍允许我翻阅我的差异less - 样式的方式来做到这一点?

    非常感谢任何见解。

4 个答案:

答案 0 :(得分:64)

我看到的简单方法就是这个......很多容易记住 (文本格式改变。所以你需要知道代码更改)

  

git diff --color-words



这是一种使其默认的方法 如果您使用的是linux,请将以下命令添加到〜/ .bashrc 文件中 然后您可以使用 gitdiff 无空格作为另一个命令。

alias gitdiff='git diff --color-words'

答案 1 :(得分:24)

一种选择是使用sed从diff中删除不需要的字符,同时保留颜色:

git diff --color | sed -r "s/^([^-+ ]*)[-+ ]/\\1/" | less -r

(请注意,您需要删除前导空格,因为它是由diff发出的。)

答案 2 :(得分:4)

对于mac用户,您必须使用以下命令:

git diff --color | sed -E "s/^([^-+ ]*)[-+ ]/\\1/" | less -r

caleb531在接受的答案中提供了它,但有一个小错字。

然后,如果您想将其抛在别名中,您可以执行以下操作:

alias gitdiff='git diff --color | sed -E "s/^([^-+ ]*)[-+ ]/\\1/" | less -r'

答案 3 :(得分:3)

如果我可以回答我自己的问题,我最终决定使用名为diff-so-fancy的工具。它不仅剥离了我的差异中的+/-,而且还简化了文件头突出显示每行内的变化。

diff-so-fancy