Git diff – ignore reorderar

numbers de git diff

diff --git a/numbers b/numbers index 5f5fbe7..d184fef 100644 --- a/numbers +++ b/numbers @@ -1,3 +1,3 @@ -1 +4 +3 2 -3 

El número 3 se repite pero el order se cambia. ¿Alguna forma de ignorar el pedido en git o cualquier solución de grep? Quiero el resultado de solo numbers agregados y eliminados, sin reorderar los mismos numbers ¿Alguna ayuda?

Las herramientas de difusión generalmente se implementan en términos del algorithm de diferencias de Myers. No hay mucho que pueda hacer para controlar el comportamiento de GNU / git / diff. (Hay un par de conmutadores que puede pasar a diff para afectar el comportamiento, pero en su caso son irrelevantes).

Simplemente puede postprocesar la salida y eliminar las líneas duplicadas, por ejemplo, puede canalizar su diff a través de la siguiente secuencia de commands awk que eliminará (duplicará) – / + reorderamiento.

 git diff | awk '{ seen[substr($0,2)]++; l[i++] = $0; } END { for (j = 0; j < i; ++j) if (seen[substr(l[j],2)] < 2) print l[j] }' 

Para su ejemplo, la salida sería,

 diff --git a/numbers b/numbers index 5f5fbe7..d184fef 100644 --- a/numbers +++ b/numbers @@ -1,3 +1,3 @@ -1 +4 2