Git: 从 diff 中的行删除前导正负号

我的问题很简单,虽然我还没有找到答案。

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

  1. 正好是80个字符的行将溢出一个字符,这看起来非常笨拙
  2. 颜色对我来说足以区分添加/删除
  3. 我更喜欢将我的终端的窗口宽度保持在80个字符(相对于任意的81个字符) ,以保持与我在终端(在 git之外)所做的其他事情的一致性

有什么配置选项可以这样做吗?如果没有,我怎样才能做到这一点,仍然允许我通过我的差异 less风格的页面?

如果你能提供点线索,我将不胜感激。

16562 次浏览

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

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

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

对于 Mac 用户,你必须使用以下命令:

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

Caleb531 在已接受的答案中提供了它,但是有一个小的打印错误。

然后,如果你想把它放到一个别名中,你可以做以下事情:

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

我见过的最简单的方法是这样的. . 很容易记住 (文本格式改变了,所以你需要知道代码的改变)

Git diff 颜色词



这里有一个方法可以让它默认
如果您正在使用 linux,请将以下命令添加到 ~/. bashrc文件中
然后可以使用 Gitdiff 没有空间作为另一个命令。

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


更新:
通过 git config 直接设置别名(不借助 ~/. bashrc)
Https://git-scm.com/book/en/v2/git-basics-git-aliases
谢谢你@dylankb

如果输入命令 git config --global alias.ci commit;
然后你可以用 git ci为你的余生承诺! !

快乐脱毛:)

如果可以回答我自己的问题,我最终决定使用一个名为 非常不错的工具。它不仅从我的差异中去除了 +/-,而且还简化了文件头 还有突出显示了每一行中的更改。

diff-so-fancy