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
或者,用彩色化,而不是这个:
你可能会得到这个:
现在,如果你比较一个很长的路线,你可能仍然遇到你最初描述的寻呼机的情况,这个问题已经得到解决,显然是满意的,在其他答案。 希望这给你一个新的工具,但是,更容易确定哪些线路已经改变。
为了减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,但gitk
和git-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)