如何使"git diff"输出正常的diff格式(非统一,非上下文)?

19

我希望git diff输出普通的、简单的差异输出(不是统一的差异,也不是上下文差异)。

我想要这样:

$ diff file1 file2
2c2
< b
---
> B
4d3
< d
5a5
> f

我不想要统一的输出:

$ diff -u file1 file2
--- file1       2012-07-04 07:57:48.000000000 -0700
+++ file2       2012-07-04 07:58:00.000000000 -0700
@@ -1,5 +1,5 @@
 a
-b
+B
 c
-d
 e
+f

我不想要上下文输出:

$ diff -c file1 file2
*** file1       2012-07-04 07:57:48.000000000 -0700
--- file2       2012-07-04 07:58:00.000000000 -0700
***************
*** 1,5 ****
  a
! b
  c
- d
  e
--- 1,5 ----
  a
! B
  c
  e
+ f

我尝试了各种 git difftool --tool= 的参数,但没有成功,并且在 git diff --help 中没有找到任何相关信息。

我尝试了不同的git difftool --tool=参数,但是没有成功。而且在git diff --help命令中没有找到任何相关的内容。

2个回答

16
git difftool --extcmd=diff

或者,不提示:

git difftool --extcmd=diff --no-prompt

这是git difftool而不是git diff,但它正在做我想要的事情。


我可以问一下你为什么需要这种类型的数据,以及 >< 的含义是什么吗? - Kasun Siyambalapitiya

2
你可以使用相同的脚本(有关详细信息,请参见git(1)手册):
$ cat diff.sh
#!/bin/sh
# get args: path old-file old-hex old-mode new-file new-hex new-mode

diff "$2" "$5"

return=$?
if [ $return -le 1 ]; then
    exit 0
else
    exit $return
fi

$ GIT_EXTERNAL_DIFF=./diff.sh git diff HEAD^..HEAD

我尝试了这个,但是出现了错误: diff.sh git diff HEAD^..HEAD: 1: diff.sh git diff HEAD^..HEAD: diff.sh: not found external diff died, stopping at subdir/file3。幸运的是,在谷歌上搜索时我找到了一个更简单的解决方案,我将其放在了一个单独的答案中。 - Rob Bednark

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接