我正在文件上运行git-diff,但是更改是在一行的结尾处。
如果我使用光标键向右移动,它将失去颜色编码-更糟糕的是,线条无法对齐-使得跟踪更改变得更加困难。
有什么方法可以防止该问题,或者只是使行换行?
我正在通过mingw32运行Git 1.5.5。
git diff --color-words | fold
fold
但是它会消除颜色。由于您已指定,因此--color-words
我假设您已成功将颜色传递给fold
。怎么样?
我正在文件上运行git-diff,但是更改是在一行的结尾处。
如果我使用光标键向右移动,它将失去颜色编码-更糟糕的是,线条无法对齐-使得跟踪更改变得更加困难。
有什么方法可以防止该问题,或者只是使行换行?
我正在通过mingw32运行Git 1.5.5。
git diff --color-words | fold
fold
但是它会消除颜色。由于您已指定,因此--color-words
我假设您已成功将颜色传递给fold
。怎么样?
Answers:
输出的显示git diff
由您使用的任何寻呼机处理。
通常,将在Linux下less
使用。
您可以通过设置GIT_PAGER
环境变量来告诉git使用其他分页器。如果您不介意分页(例如,终端允许您向后滚动),则可以尝试GIT_PAGER
使用寻呼机显式设置为空以停止它。在Linux下:
$ GIT_PAGER='' git diff
没有寻呼机,行将自动换行。
如果您的终端不支持彩色输出,您也可以使用--no-color
参数将其关闭,或者在git config文件的color部分中放置一个条目。
$ GIT_PAGER='' git diff --no-color
或者,如果您使用较少作为默认寻呼机,则只需-S
在查看差异时键入以重新启用环绕即可。
--word-diff
查看更改词的彩色编码突出显示
--word-diff
部分应该对此有自己的答案,因为它令我惊讶地为帮助解决潜在问题做出了很多努力:弄清长线的变化。所以,我做到了:stackoverflow.com/a/19253759/313756
-S
使用大写字母S而不是-s
。键入以后-S
,Less会在底部显示一条消息“折叠长行(按RETURN)” ,然后按Return键即可进行换行。
您也可以使用git config
设置寻呼机进行换行。
$ git config core.pager 'less -r'
设置当前项目的寻呼机设置。
$ git config --global core.pager 'less -r'
为所有项目全局设置寻呼机
git config --global core.pager "less -r"
man 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
或者,使用着色,而不是:
您可能会得到:
现在,如果您要比较的是一条很长的线,则您最初描述的寻呼机状况可能仍然存在问题,显然已经在其他答案中得到了解决。希望这为您提供了一个新工具,可以更轻松地确定生产线上发生了什么变化。
--color-words
似乎是的简写--word-diff=color
,当您仅查看差异而不共享它时,这很好。
--word-diff=porcelain
更喜欢这样做,--word-diff
因为porcelain
将更改放在单独的行中,而--word-diff
将更改放入行中。当差异细微时,单独的行使您可以更轻松地查看差异。
要减少使用寻呼机并使行换行成为永久性,您只需启用fold-long-lines选项:
git config --global core.pager 'less -+S'
这样,您不必在使用更少的时候键入它。
干杯
git config --global core.pager 'less -S
刚刚用谷歌搜索了这个。 GIT_PAGER='less -r'
为我工作
less -R
实际上,我也使用less -eiFRSX
,它也解决了颜色和换行问题。)
Mac OSX:除了有人运行时,有人的45的“ -S”对我来说没有其他答案。需要以下步骤来使自动换行:
git config --global core.pager 'less -+$LESS -FRX'
-+$LESS
参数做什么?除非git定义了它,否则我的LESS环境变量都没有设置。
$LESS
将其设置为某个值(例如,通过a .login
或a .profile
或诸如此类的值),我认为该选项只是添加默认值,然后再添加默认值-FRX
。
$LESS
是不确定的。
八年后,我从/superuser/777617/line-wrapping-less-in-os-x-specifically-for-use-with-git-diff找到了一个更好的答案:
git config core.pager `fold -w 80 | less`
现在,您首先通过折叠将git diff通过管道传递,然后传递给less:包裹,正确的页面高度要少,保持语法高亮。
您可以简单地将git diff的输出传递给更多:
git diff | more