git diff – 处理长行?

我正在一个文件上运行git-diff ,但是这个改变是在一个很长的行结尾。

如果我使用光标键向右移动,则会丢失颜色编码,而且线条越来越不一致,从而难以跟踪更改。

有没有办法来防止这个问题,或者只是简单地换行呢?

(通过mingw32运行git 1.5.5)

git diff输出的显示是由你正在使用的任何寻呼机来处理的。

通常情况下,在Linux下,会使用less

您可以通过设置GIT_PAGER环境variables来告诉git使用不同的寻呼机。 如果您不介意分页(例如,您的terminal允许您向后滚动),则可以尝试明确地将GIT_PAGER设置为空以使用寻呼机停止。 在Linux下:

 $ GIT_PAGER='' git diff 

如果没有寻呼机,这些线路将被包裹。

如果您的terminal不支持彩色输出,您也可以使用--no-color参数或者在gitconfiguration文件的颜色部分添加一个条目来closures此function。

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

或者,如果您使用较less的默认寻呼机,只需键入-S同时查看diff以重新打包更less。

你也可以使用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 

或者,用彩色化,而不是这个:

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

你可能会得到这个:

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

现在,如果你比较一个很长的路线,你可能仍然遇到你最初描述的寻呼机的情况,这个问题已经得到解决,显然是满意的,在其他答案。 希望这给你一个新的工具,但是,更容易确定哪些线路已经改变。

为了减less使用寻呼机和永久换行,只需启用fold-long-line选项即可:

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

这样你就不必在使用less的时候input。

干杯

只是search了这一个。 GIT_PAGER='less -r'适用于我

Mac OSX:除了someone45的“S”之外,没有其他的答案,而less于正在运行的为我工作。 花了以下的时间来使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发行说明

八年后,我find了一个优越的答案,从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` 

现在你通过折叠来pipe理git diff,首先,然后到更less:包装,更less的页面高度是正确的,保持语法高亮。

你可以简单地将git diff的输出传递给更多的:

 git diff | more 

不是一个完美的解决scheme,但gitkgit-gui都可以显示这些信息,并有滚动条。

当你使用“git diff”,并显示多个页面时,你可以input“-S”并回车(S应该是大写)。 它会切换长折叠线。

目前没有人指出这一点。 它很容易记住,不需要在gitconfiguration中进行额外的configuration

 git diff --color | less -R 

列出当前/默认configuration:

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

然后更新并忽略-S如:

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

-S:导致比屏幕宽度更长的线被切碎而不是折叠。

遇到困难时,我经常诉诸DiffMerge。 优秀的差异工具,具有内嵌差异突出显示。 另外,在最新的版本中,他们添加了一个模式,使其具有水平模式。

不过,我还没有能够configurationgit来使用它。 所以我必须先弄清楚两个版本的文件。

简单的方法来做,在我的情况下,我使用Linux操作系统

 git diff > text.txt 

这个命令行创build并将git diff输出放入text.txt中,然后用另一个文本编辑器(例如sublime text)打开它。

 sublime text.txt 

希望它能帮助你。

不要忘了删除它之后。 = 0)