Ответ 1
git difftool --extcmd=diff
или, не запрашивая:
git difftool --extcmd=diff --no-prompt
Это git difftool
, а не git diff
, но он делает то, что я хочу.
Я хочу, чтобы git diff
выводил обычный, обычный старый diff-выход (не унифицированный diff, а не 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 --extcmd=diff
или, не запрашивая:
git difftool --extcmd=diff --no-prompt
Это git difftool
, а не git diff
, но он делает то, что я хочу.
Вы можете использовать тот же script (подробнее см. man 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