当前位置:  开发笔记 > 编程语言 > 正文

git diff - 处理长线?

如何解决《gitdiff-处理长线?》经验,为你挑选了9个好方法。

我在一个文件上运行git-diff,但更改是在一个长行的末尾.

如果我使用光标键向右移动它会丢失颜色编码,更糟糕的是线条不会排列,这使得跟踪更改变得更加困难.

有没有办法防止这个问题,或简单地换行换行?

(通过mingw32运行git 1.5.5)



1> 小智..:

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


相关提示,使用`--word-diff`查看已更改单词的颜色编码突出显示
这只是一个注意事项,因为我看到有些人遇到了问题,-S与-s不同(请确保你遇到shift + s)

2> SpoonMeiser..:

输出的显示git diff由您正在使用的任何寻呼机处理.

通常,在Linux下,less将使用.

你可以通过设置GIT_PAGER环境变量告诉git使用不同的寻呼机.如果您不介意分页(例如,您的终端允许您向后滚动),您可以尝试显式设置GIT_PAGER为空以使用寻呼机来停止它.在Linux下:

$ GIT_PAGER='' git diff

如果没有寻呼机,线条将会换行.

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

$ GIT_PAGER='' git diff --no-color



3> Shoan..:

您还可以使用git config设置寻呼机进行换行.

$ git config core.pager 'less -r' 

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

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

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


使用msysgit(1.8.1.msysgit.1)它使用双引号为我工作 - `git config --global core.pager"less -r"`

4> lindes..:

Josh Diehl在对这个答案的评论中给予了充分的信任,但我觉得这应该是一个自己的答案,所以补充一下:

处理长线差异的一种方法是使用面向字的差异.这可以通过以下方式完成:

git diff --word-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

或者,使用着色,而不是:

只是<code> git diff </ code>的结果

你可能会得到这个:

<code> git diff --word-diff </ code>的结果

现在,如果你要比较一个非常长的行,你可能仍然会遇到你最初描述的寻呼机情况的问题,并且在其他答案中已经解决了,显然是满意的.希望这会为您提供一个新工具,以便更轻松地识别线路上的变化.


`--word-diff`有几个选项:`color`,`plain`和`porcelain`.此外,可以使用`--word-diff-regex`更改字边界的正则表达式.默认似乎是`\ S +`.([2.1.1](http://git-scm.com/docs/git-diff/2.1.1))
`--color-words`看起来是`--word-diff = color`的简写,当你只是查看差异而不是分享它时这很好.

5> 小智..:

要使用less作为寻呼机并使换行永久化,您只需启用fold-long-lines选项:

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

这样您就不必在使用less时键入它.

干杯



6> singingfish..:

只是用Google搜索了这个. GIT_PAGER='less -r'适合我


更好(对我来说):`less -R`(实际上,我使用`less -eiFRSX`,它也解决了颜色和换行问题.)
less -R类似于-r,但只有ANSI"颜色"转义序列以"原始"形式输出.与-r不同,大多数情况下都能正确维护屏幕外观.(男人少)

7> John Lemberg..:

Mac OSX:没有其他答案,除了某人45的'-S',而较少的运行对我有用.它采用以下方法使word-wrap持久化:

git config --global core.pager 'less -+$LESS -FRX'


@jakar:然后它什么也没做.在某些环境中,`$ LESS`设置为某个值(例如,通过`.login`或`.profile`或其他东西),我认为该选项只添加默认值,然后添加`-FRX`除此之外.

8> 小智..:

自Git 1.5.3(2007年9月)

一个--no-pager选项已经可用.

git --no-pager diff

如何防止git diff使用寻呼机?

从v2.1开始,wrap是默认值

Git v2.1发行说明



9> Thomson Come..:

八年后,我找到了一个更好的答案,来自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`

现在你通过fold管道git diff,首先,然后更少:包装,更少的页面高度是正确的,保持语法高亮.

推荐阅读
mobiledu2402851203
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有