2012-07-04 9 views
10

Quiero git diff para dar salida normal, simple y antigua diff (diff no unificado, y no diff de contexto).Cómo hacer que "git diff" emita el formato normal de diferencia (no unificado, sin contexto)?

quiero esto:

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

NO quiero salida unificada:

$ 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 

NO quiero salida de contexto:

$ 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 

Me trataron los diversos git difftool --tool= args con sin suerte, y no encontré nada relevante en git diff --help

Respuesta

12
git difftool --extcmd=diff 

o, sin preguntar:

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

Ésta es git difftool en lugar de git diff pero está haciendo lo que quiero.

+0

¿Puedo preguntar por qué necesita ese tipo de datos, y cuál es el significado de'> 'y' <' –

1

Usted puede utilizar la misma secuencia de comandos (ver man git (1) para más detalles):

$ 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 
+0

Intenté esto, pero me sale el error: diff.sh git diff HEAD^.. HEAD: 1: diff.sh git diff HEAD^.. HEAD: diff.sh: no encontrado diff externo murió, deteniéndose en subdir/file3. "Afortunadamente, encontré una solución mucho más fácil mientras buscaba en Google, que puse en una respuesta separada. –

Cuestiones relacionadas