代码之家  ›  专栏  ›  技术社区  ›  Peter Boughton

git diff-处理长线?

  •  223
  • Peter Boughton  · 技术社区  · 16 年前

    我在跑步 git-diff 在文件上,但更改位于一个长行的末尾。

    有没有一种方法可以防止这个问题,或者干脆把线包起来?

    16 回复  |  直到 5 年前
        1
  •  235
  •   Nakilon earlonrails    11 年前

    或者,如果您使用较少作为默认寻呼机,只需键入 -S 在查看差异以较少的时间重新启用包装时。

        2
  •  129
  •   Zombo    10 年前

    输出的显示 git diff

    通常,在Linux下, less 将被使用。

    GIT_PAGER 环境变量。如果您不介意分页(例如,您的终端允许您向后滚动),您可以尝试显式设置 GIT_寻呼机 清空以使用寻呼机停止它。在Linux下:

    $ GIT_PAGER='' git diff
    

    如果您的终端不支持彩色输出,也可以使用 --no-color 参数,或在git配置文件的颜色部分中放置一个条目。

    $ GIT_PAGER='' git diff --no-color
    
        3
  •  119
  •   Shoan    14 年前

    你也可以使用 git config

    $ git config core.pager 'less -r' 
    

    设置当前项目的寻呼机设置。

    $ git config --global core.pager 'less -r' 
    

    为所有项目全局设置寻呼机

        4
  •  58
  •   Michael come lately PhiLho    7 年前

    完全归功于 Josh Diehl a comment this answer 然而,我觉得这应该是一个答案,所以补充说:

    git diff --word-diff
    

    在这种情况下,您将得到一个显著不同的diff输出,它具体显示了一行中发生的变化。

    例如,不要得到这样的东西:

    diff --git a/test-file.txt b/test-file.txt
    index 19e6adf..eb6bb81 100644
    --- a/test-file.txt
    +++ b/test-file.txt
    @@ -1 +1 @@
    -this is a short line
    +this is a slightly longer line
    

    您可能会得到这样的结果:

    diff --git a/test-file.txt b/test-file.txt
    index 19e6adf..eb6bb81 100644
    --- a/test-file.txt
    +++ b/test-file.txt
    @@ -1 +1 @@
    this is a [-short-]{+slightly longer+} line
    

    result of just <code>git diff</code>

    您可能会得到以下结果:

    result of <code>git diff --word-diff</code>

    现在,如果你比较的是一条很长的线,你可能仍然会对你最初描述的寻呼机情况有问题,并且在其他答案中已经很满意地解决了这个问题。不过,希望这能为您提供一个新的工具,以便更轻松地识别线上发生的变化。

        5
  •  30
  •   Daniel Montezano    12 年前

    要减少用作寻呼机并使换行永久化,您只需启用“折叠长线”选项:

    git config --global core.pager 'less -+S'
    

    干杯

        6
  •  19
  •   singingfish    15 年前

    只是用谷歌搜索到了这个。 GIT_PAGER='less -r' 为我工作

        7
  •  19
  •   John Lemberger    13 年前

    git config --global core.pager 'less -+$LESS -FRX'
    
        8
  •  12
  •   Community iksemyonov    7 年前

    自Git 1.5.3以来 Sep 2007

    --no-pager

    git --no-pager diff
    

    How do I prevent git diff from using a pager?

    Example

    从v2.1开始,默认为换行

    Git v2.1 Release Notes

        9
  •  6
  •   infoclogged    8 年前

    到目前为止,还没有人指出这一点。它很容易记住,不需要在git配置中进行额外的配置

    git diff --color | less -R
    
        10
  •  5
  •   Community iksemyonov    7 年前

    https://superuser.com/questions/777617/line-wrapping-less-in-os-x-specifically-for-use-with-git-diff :

    git config core.pager `fold -w 80 | less`
    

    现在,通过管道将git diff先折叠,然后缩小:包装,缩小页面高度是正确的,请保持语法高亮显示。

        11
  •  5
  •   Amin    7 年前

    当您使用“git diff”时,它会显示多个页面(您可以在页面末尾看到“:”),在这种情况下,您可以键入“-s”并按enter键。(s应为大写)。它将切换折叠长线条。

        12
  •  3
  •   AnonTidbits    11 年前

    您可以通过管道将git diff的输出传输到更多:

    git diff | more
    
        13
  •  3
  •   Zombo    10 年前

    gitk git-gui

        14
  •  1
  •   Shaffiulla Khan    8 年前

    列出当前/默认配置:

      $ git config --global core.pager  
        less -FXRS -x2
    

    然后更新并省略-S,如:

      $ git config --global core.pager 'less -FXR -x2'
    

        15
  •  -1
  •   webmat    16 年前

    遇到麻烦时,我经常求助于DiffMerge。优秀的差异工具,具有在线差异突出显示。此外,在最新版本中,他们添加了一个模式,使其具有水平模式。

    不过,我还无法将git配置为使用它。因此,我确实必须先找到两个版本的文件。