我在一个文件上运行git-diff,但是更改位于一个长行的末尾。
如果我使用光标键向右移动,它就失去了颜色编码——更糟糕的是,线条没有对齐——这使得跟踪变化变得更加困难。
有没有办法防止这个问题,或者简单地让行换行?
我通过mingw32运行Git 1.5.5。
我在一个文件上运行git-diff,但是更改位于一个长行的末尾。
如果我使用光标键向右移动,它就失去了颜色编码——更糟糕的是,线条没有对齐——这使得跟踪变化变得更加困难。
有没有办法防止这个问题,或者简单地让行换行?
我通过mingw32运行Git 1.5.5。
当前回答
直到现在还没有人指出这一点。它很容易记住,不需要在git配置中做额外的配置
git diff --color | less -R
其他回答
完全归功于Josh Diehl对这个答案的评论,尽管如此,我还是觉得这应该是一个自己的答案,所以加上它:
处理在长行中看到差异的一种方法是使用面向单词的diff。这可以通过以下方式实现:
git diff --word-diff
在这种情况下,您将得到一个显著不同的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
或者,用彩色代替这个:
你可能会得到这个:
现在,如果您正在比较一个非常长的行,您可能仍然对您最初描述的寻呼机情况有问题,并且在其他答案中已经解决了这个问题,显然令人满意。不过,希望这为您提供了一种新的工具,可以更容易地识别在线上发生了哪些更改。
你也可以使用git配置来设置分页器来进行包装。
$ git config core.pager 'less -r'
设置当前项目的寻呼机设置。
$ git config --global core.pager 'less -r'
为所有项目全局设置寻呼机
遇到麻烦时,我经常求助于DiffMerge。优秀的差异工具,具有inline diff高亮。此外,在最新版本中,他们还添加了一个水平模式。
不过,我还没能配置git来使用它。所以我必须先把文件的两个版本都弄出来。
当你使用“git diff”,它显示了几个页面(你看到“:”在页面的末尾),在这种情况下,你可以输入“-S”并按enter。(S应为大写)。它将切换折叠长行。
你可以简单地将git diff的输出输出到more:
git diff | more