我在文件上运行git-diff,但更改是在一个长行的末尾。
如果我使用光标键向右移动它会丢失颜色编码,更糟糕的是线条不会排列,这使得跟踪更改变得更加困难。
有没有办法防止这个问题,或者简单地换行换行?
(通过mingw32运行git 1.5.5)
答案 0 :(得分:222)
或者,如果您使用less作为默认寻呼机,只需键入-S
,同时查看差异重新启用包装的差异。
答案 1 :(得分:113)
git diff
输出的显示由您正在使用的任何寻呼机处理。
通常,在Linux下,将使用less
。
您可以通过设置GIT_PAGER
环境变量来告诉git使用不同的寻呼机。如果您不介意分页(例如,您的终端允许您向后滚动),您可以尝试将GIT_PAGER
显式设置为空以使用寻呼机停止分页。在Linux下:
$ GIT_PAGER='' git diff
没有寻呼机,线条会换行。
如果您的终端不支持彩色输出,您也可以使用--no-color
参数关闭它,或在git配置文件的颜色部分输入一个条目。
$ GIT_PAGER='' git diff --no-color
答案 2 :(得分:112)
您还可以使用git config
设置寻呼机进行换行。
$ git config core.pager 'less -r'
设置当前项目的寻呼机设置。
$ git config --global core.pager 'less -r'
为所有项目全局设置寻呼机
答案 3 :(得分:39)
在Josh Diehl到a comment的this answer完全归功,我觉得这应该是自己的答案,所以加上它:
处理长线差异的一种方法是使用面向字的差异。这可以通过以下方式完成:
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
或者,使用着色,而不是:
你可能会得到这个:
现在,如果你要比较一个非常长的行,你可能仍然会遇到你最初描述的寻呼机情况的问题,并且在其他答案中已经解决了,显然是满意的。希望这会为您提供一个新工具,以便更容易地识别出生产线上的变化。
答案 4 :(得分:29)
要使用less作为寻呼机并使换行永久化,您只需启用fold-long-lines选项:
git config --global core.pager 'less -+S'
这样您就不必在使用less时键入它。
干杯
答案 5 :(得分:19)
只是用谷歌搜索了这个。 GIT_PAGER='less -r'
适合我
答案 6 :(得分:18)
Mac OSX:除了某人45的'-S'之外,其他所有答案都没有,而较少的是为我工作。它采用以下方法使word-wrap持久化:
git config --global core.pager 'less -+$LESS -FRX'
答案 7 :(得分:10)
自Git 1.5.3起 (Sep 2007)
已提供--no-pager
选项。
git --no-pager diff
How do I prevent git diff from using a pager?
从v2.1开始,wrap是默认的
答案 8 :(得分:5)
八年后,我从https://superuser.com/questions/777617/line-wrapping-less-in-os-x-specifically-for-use-with-git-diff找到了一个更好的答案:
var parentOffset = $(this).parent().offset();
var relX = e.pageX - parentOffset.left;
var relY = e.pageY - parentOffset.top;
现在你通过fold管道git diff,首先是less:wrap,包含更少的页面高度,保持语法高亮。
答案 9 :(得分:3)
不是一个完美的解决方案,但gitk
和git-gui
都可以显示此信息,
并有滚动条。
答案 10 :(得分:3)
你可以简单地将git diff的输出传递给更多:
git diff | more
答案 11 :(得分:3)
当您使用“git diff”并显示多个页面时(在页面末尾看到“:”),在这种情况下,您可以键入“-S”并按Enter键。(S应为大写)。它将切换折叠长线。
答案 12 :(得分:2)
直到现在还没有人指出这一点。它很容易记住,并且不需要在git config
中完成额外的配置git diff --color | less -R
答案 13 :(得分:1)
列出当前/默认配置:
$ git config --global core.pager
less -FXRS -x2
然后更新并省略-S like:
$ git config --global core.pager 'less -FXR -x2'
-S:导致长于屏幕宽度的行被切断而不是折叠。
答案 14 :(得分:-1)
遇到麻烦时,我经常使用DiffMerge。出色的差异工具,具有内嵌差异突出显示功能。此外,在最新版本中,他们添加了一种具有水平模式的模式。
但是我无法配置git来使用它。因此,我必须首先获取文件的两个版本。
答案 15 :(得分:-1)
简单的方法,在我的情况下,我使用Linux os
git diff > text.txt
此命令行创建并将git diff输出放在text.txt中 然后你可以用另一个文本编辑器打开它,例如sublime text。
sublime text.txt
希望对你有所帮助。
不要忘记删除它。 = 0)