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

cal*_*531 37 git git-diff

我的问题很简单,但我找不到答案.

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

  1. 正好是80个字符的行将被一个字符溢出,这看起来很尴尬
  2. 着色足以让我区分添加/删除
  3. 我更喜欢将终端的窗口宽度保持在80个字符(而不是任意81个字符),以保持与我在终端(外部git)中所做的其他事情保持一致

这样做有一些配置选项吗?如果没有,我怎么能以一种仍允许我翻阅我的差异less风格的方式来做到这一点?

任何见解将不胜感激.

smi*_*ace 75

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

git diff --color-words



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

alias gitdiff='git diff --color-words'
Run Code Online (Sandbox Code Playgroud)

  • 这不仅仅是为我删除+/-.不幸的是,这也在同一行上添加了一些添加/删除. (7认同)
  • 有没有办法让这个默认? (4认同)
  • 如果您使用的是linux,请将括号内的命令添加到〜/ .bashrc文件中(别名gitdiff ='git diff --color-words').然后你可以使用没有空格的gitdiff作为另一个命令. (3认同)

nul*_*ptr 25

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

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

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

  • 这对我有用,虽然我需要将`sed -r`更改为sed -E`(我正在运行OS X,所以我认为它是某种与平台相关的怪癖).无论如何,这个解决方案很好地作为一个git别名 - 非常感谢:) (9认同)
  • 这个选项比 `--color-words` 更好,因为它将更改保留在单独的行上。一些用户不想连接发生在同一行上的更改。这将删除加号和减号,同时保留换行符。 (2认同)

cal*_*531 6

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

差异化


Kyl*_*enn 5

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

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

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

然后,如果您要将其放入别名中,则可以执行以下操作:

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