Git:从 diff 中的行中删除前导 plus/minus

Git: remove leading plus/minus from lines in diff

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

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

  1. 恰好 80 个字符的行会溢出一个字符,这看起来很尴尬
  2. 颜色足以让我区分additions/deletions
  3. 我宁愿将终端的 window 宽度保持在 80 个字符(而不是任意的 81 个字符),以保持与我在终端中所做的其他所有操作(git 之外)的一致性)

是否有一些配置选项可以执行此操作?如果没有,我怎样才能以一种仍然允许我翻阅我的 diff less 风格的方式来做到这一点?

任何见解将不胜感激。

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

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

(请注意,您还需要删除前导 space,因为它是由 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 --color-words



这是一种使其成为默认值的方法
如果您使用 linux 将以下命令添加到您的 ~/.bashrc 文件
然后你可以使用 gitdiff 没有 space 作为另一个命令。

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


更新:
直接通过 git 配置设置别名(无需借助 ~/.bashrc)
https://git-scm.com/book/en/v2/Git-Basics-Git-Aliases
谢谢@dylankb。

示例: 如果输入命令 git config --global alias.ci commit;
那么你可以 git ci 为你的余生做出贡献!!

Gitting 快乐 :)

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