git diff – ¿Se puede cambiar su comportamiento en circunstancias particulares?

Supongamos que tengo este file (es corto), y en el transcurso del desarrollo lo edito en este file . La salida de un git diff , entonces, es la siguiente:

 ...
 @@ -7,6 +7,12 @@ int main () {
      // código aquí, implementación de la sección 1

      / ************************************************* **************************
 + ** Nuevo encabezado de sección 2, con una breve descripción
 + ************************************************* ************************* /
 +
 + // algún código aquí que va entre las antiguas secciones 1 y 2
 +
 + / ************************************************ ***************************
       ** Encabezado de sección 2, con otra breve descripción
       ************************************************** ************************ /

Esto me parece indeseable, ya que rompe el cambio lógico de "esta sección se agregó" a "esta sección se insertó en el medio del encabezado de esta otra sección". Esperaba algo como esto:

 ...
 @@ -7,6 +7,12 @@ int main () {
      // código aquí, implementación de la sección 1

 + / ************************************************ ***************************
 + ** Nuevo encabezado de sección 2, con una breve descripción
 + ************************************************* ************************* /
 +
 + // algún código aquí que va entre las antiguas secciones 1 y 2
 +
      / ************************************************* **************************
       ** Encabezado de sección 2, con otra breve descripción
       ************************************************** ************************ /

¿Hay alguna opción en diff que pueda corregir esto (es decir, si estoy haciendo un parche, esa corrección no tendría que hacerse a mano)? Probé algunos de los otros algorithms enumerados en la página man de git diff , pero todos produjeron el mismo resultado.

Sé que Git almacena instantáneas completas del tree fuente al confirmar (y las diff se generan sobre la marcha), por lo que en última instancia no afecta el contenido real, pero podría algo como esto causar un problema durante una fusión, por ejemplo ? Creo que en cierto modo me molesta que el cambio lógico que hice no se refleje exactamente en la diff que produjo.