我在一个文件上运行git-diff,但更改是在一个长行的末尾.
如果我使用光标键向右移动它会丢失颜色编码,更糟糕的是线条不会排列,这使得跟踪更改变得更加困难.
有没有办法防止这个问题,或简单地换行换行?
(通过mingw32运行git 1.5.5)
或者,如果您使用less作为默认寻呼机,只需-S
在查看差异时键入以重新启用包装.
输出的显示git diff
由您正在使用的任何寻呼机处理.
通常,在Linux下,less
将使用.
你可以通过设置GIT_PAGER
环境变量告诉git使用不同的寻呼机.如果您不介意分页(例如,您的终端允许您向后滚动),您可以尝试显式设置GIT_PAGER
为空以使用寻呼机来停止它.在Linux下:
$ GIT_PAGER='' git diff
如果没有寻呼机,线条将会换行.
如果您的终端不支持彩色输出,您也可以使用--no-color
参数关闭它,或在git配置文件的颜色部分放置一个条目.
$ GIT_PAGER='' git diff --no-color
您还可以使用git config
设置寻呼机进行换行.
$ git config core.pager 'less -r'
设置当前项目的寻呼机设置.
$ git config --global core.pager 'less -r'
为所有项目全局设置寻呼机
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
或者,使用着色,而不是:
你可能会得到这个:
现在,如果你要比较一个非常长的行,你可能仍然会遇到你最初描述的寻呼机情况的问题,并且在其他答案中已经解决了,显然是满意的.希望这会为您提供一个新工具,以便更轻松地识别线路上的变化.
要使用less作为寻呼机并使换行永久化,您只需启用fold-long-lines选项:
git config --global core.pager 'less -+S'
这样您就不必在使用less时键入它.
干杯
只是用Google搜索了这个. GIT_PAGER='less -r'
适合我
Mac OSX:没有其他答案,除了某人45的'-S',而较少的运行对我有用.它采用以下方法使word-wrap持久化:
git config --global core.pager 'less -+$LESS -FRX'
自Git 1.5.3(2007年9月)
一个--no-pager
选项已经可用.
git --no-pager diff
如何防止git diff使用寻呼机?
例
从v2.1开始,wrap是默认值
Git v2.1发行说明
八年后,我找到了一个更好的答案,来自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,首先,然后更少:包装,更少的页面高度是正确的,保持语法高亮.