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

Git:从diff中的行中删除前导加号/减号,git,git-diff,Git,Git Diff,我的问题很简单,尽管我没有找到答案 我想删除git diff中每一行的前导加号/减号。在你问我为什么要这样做之前,请允许我概述一下我的理由: 正好是80个字符的行将被单个字符溢出,这看起来很尴尬 颜色足以让我区分添加/删除 我希望将终端的窗口宽度保持在80个字符(而不是任意的81个字符),以保持与我在终端中执行的所有操作的一致性(在git之外) 是否有一些配置选项可以执行此操作?如果没有,我如何才能做到这一点,仍然允许我通过我的diffless-风格页面 任何细节都将不胜感激。一个选项是使用se

我的问题很简单,尽管我没有找到答案

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

  • 正好是80个字符的行将被单个字符溢出,这看起来很尴尬
  • 颜色足以让我区分添加/删除
  • 我希望将终端的窗口宽度保持在80个字符(而不是任意的81个字符),以保持与我在终端中执行的所有操作的一致性(在git之外)
  • 是否有一些配置选项可以执行此操作?如果没有,我如何才能做到这一点,仍然允许我通过我的diff
    less
    -风格页面


    任何细节都将不胜感激。

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

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

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

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

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

    在接受的答案中提供,但有一个小的拼写错误

    然后,如果要在别名中加入此选项,可以执行以下操作:


    别名gitdiff='gitdiff--color | sed-E“s/^([^-+]*)[-+]/\\1/“| less-r'

    我看到的简单方法是。。非常容易记住 (文本格式更改。因此您需要知道代码更改)

    git diff——颜色词



    下面是一种使其成为默认值的方法

    如果您正在使用linux,请将以下命令添加到~/.bashrc文件
    然后,您可以使用不带空格的gitdiff作为另一个命令

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


    更新:
    通过git config直接设置别名(无需~/.bashrc的帮助)

    谢谢@dylankb的支持。

    示例: 如果输入命令
    git config--global alias.ci commit

    然后,您可以在余生中使用
    git ci
    进行提交


    Happy Gitting:)

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


    +/-只是不同的工作方式。如果你不想要+/-,你可能需要使用不同的diff工具。@Dave:有些系统只有一个终端(不在图形外壳中运行)-比如
    tty
    -在这些终端中无法调整大小,因为它们有一个固定的光栅…我还想知道如何禁用前导加号/减号。因为它确实阻止我从diff视图复制粘贴代码。有好几次,我真的只需要复制被更改的代码(恢复一些旧代码),而如果不在之后进行搜索和替换,您就无法使用diff工具完成这项工作。这对我来说很有用,尽管我需要将
    sed-r
    更改为sed-E`(我正在运行OS X,所以我认为这是某种与平台相关的怪癖)。无论如何,这个解决方案可以很好地作为git别名工作,非常感谢:)我的.profile中有一个别名:alias nm='sed-r“s/^([^-+]*)[-+]/\\1/”,我还做了:git config alias.df='diff--color',现在我可以做:git diff[我想要的任何参数]| nm,去除所有的优缺点,保留颜色。(“nm”代表“无减号”)此选项优于
    --颜色词
    ,因为它将更改保留在单独的行中。有些用户不希望将发生在同一行上的更改连接起来。这会在保留换行符的同时删除加号和减号。下面使用
    git diff--color words
    的答案更适合我,即使更改可以压缩到一行中。是否有办法将其设为默认值?如果使用linux,请将括号内的命令添加到~/.bashrc文件中(别名gitdiff='gitdiff--color words')。然后您可以使用gitdiff而不使用空格作为另一个命令。这对我来说不仅仅是删除+/-。不幸的是,这也会将一些添加/删除放在同一行上。@ioquatix您还可以使用git config-既可以使用
    git config
    cli,也可以使用
    ~/.gitconfig
    文件。如果您使用git config,可能不会让它成为一种罪恶您可以使用bash别名或覆盖
    diff
    ,但通过在
    [alias]中设置
    d=diff--color
    ,您肯定可以创建类似
    git d
    的简短内容
    在~/.gitconfig中。以下是cli.Woops的文档,我的意思是
    d=diff--color words
    不错的选择。我还建议在包装可能很麻烦的情况下使用
    less-s
    。只是不要认为这就保证了它自己的答案。