【问题标题】:git diff - show me line ending changes?git diff - 显示行尾更改?
【发布时间】:2011-04-24 15:42:03
【问题描述】:

我的编辑器正在更改我的源文件的行尾。当我执行git diff 时,我看到同一行两次——一次是-,一次是+——没有明显区别。

我如何让git diff 告诉我这个更改实际上是什么?

【问题讨论】:

  • this 的近似副本(下面也提到):我最喜欢的是git config diff.wsErrorHighlight all

标签: git line-endings git-diff


【解决方案1】:

首先,确保您使用的是彩色输出(例如,git diff --color)并且您已启用空白突出显示(例如)

git config color.diff.whitespace "red reverse"

这可能不适用于所有情况,但是,git 似乎不会突出显示 已删除 行的尾随空格。要查看已删除的空格,只需使用

git diff -R

将空白放在比较的“添加”一侧,它确实会突出显示。

更多详情,请查看this SO question的答案。

【讨论】:

  • 我有 git 版本 2.1.4,我根据 git config 命令建议采取了行动。但是 git diff 仍然没有显示出任何差异。如果我将 git diff 传递到 hexdump -C 那里什么都没有显示:000000f0 2d 2d 7d 0a 2b 2b 7d 0a |--}.++}.| 7d 是 '}' 花括号。
【解决方案2】:

您可以使用以下命令查看行尾差异。

git diff | cat -v

然后为 CRLF (DOS) 结尾打印 "^M",对于 LF (Unix) 结尾则不打印。

显然 git diff 正在做正确的事情,为 CRLF 结尾打印 CR 和 LF 字符。 但是因为 CR 被控制台消费了,所以我们看不到它。通过使用 cat -v,我们可以让它可见。

【讨论】:

  • 另一种类似的方法是git diff > somediff && vi somediff,vim 也将 CRLF 显示为 ^M。但cat -v 很整洁。
【解决方案3】:

查看空格变化的一种方法是使用逐个字符的“单词差异”

git diff --color --word-diff-regex=.

这会突出显示所有空格更改行中的所有位置。删除的空格包含在[--] 中,并在{++} 中添加了空格。

或者,suggested by Alex

git diff --color --ws-error-highlight=new,old

突出显示行尾的所有空白更改

【讨论】:

    【解决方案4】:
    git diff --ws-error-highlight=new,old
    

    突出显示更改行中的空白差异。

    【讨论】:

    • 你用的是什么版本的git?我系统上的 git 2.1.4 说 --ws-error-highlight=new,old 是无效选项。
    • 这个选项是 2015 年在 git 2.5.0 中添加的。
    • 我的 git 版本 2.8.2.windows.1+ 行上显示 ^M 而不是在 - 行上,这让我一直认为我的 IDE (PhpStorm) 正在改变我的行尾以 DOS 风格,而实际上并非如此。它只是保留由坏编辑器创建的旧文件的现有行尾。您的修复显示了 -+ 的行尾,这是 git 首先应该做的。
    【解决方案5】:

    图形差异工具将更好地向您显示更改 -- 试试git difftool

    使用meld,并将首选项设置为显示空白。 (编辑 -> 首选项 -> 显示空白。)

    其他图形工具可能有类似的选项——@Cotton 的回答+评论告诉你如何用 vimdiff 做到这一点。

    【讨论】:

    • 图形差异工具可能不可用。 @paul-whittaker 的答案将在问题所暗示的上下文中起作用(某些终端)。
    • 现在这很奇怪,但git difftool --tool=meld doesn't 甚至启动了融合。我不知道是不是因为正在进行rebase。
    • Meld 不显示换行符是 LF 还是 CRLF。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-11
    • 1970-01-01
    • 2014-10-19
    • 1970-01-01
    • 2013-09-19
    • 1970-01-01
    • 2017-10-28
    相关资源
    最近更新 更多