Abordando el problema de demasiados cambios de espacio en blanco en el compromiso de git

Digamos que tienes un código que se ve así (notación basada en XML):

<Root> <childA /> <childB /> <childC /> </Root> 

Por una razón legítima, necesito ajustar <Root>...</Root> con otra label para que el nuevo código se vea así:

 <NewRoot> <Root> <childA /> <childB /> <childC /> </Root> </NewRoot> 

Cuando lo hago, obviamente git muestra que cada línea cambió cuando se introdujo una nueva sangría. Mi pregunta es la siguiente: ¿existe alguna técnica o estrategia para evitar que se muestren todas las líneas como modificadas?

Para aclarar, mi pregunta gira en torno al compromiso inicial, soy consciente de que hay forms de abordar este problema después de la confirmación, como usar el parámetro URL para BitBucket o GitHub o hacer algo como esto o esto . La razón por la que estoy buscando una solución más sólida en comparación con las soluciones anteriores es la siguiente:

  • el uso del parámetro URL depende de la implementación y no es portátil
  • El uso de git diff (como en CLI) introduce commands complejos no universales y no se aplicará a los clientes de GUI git
  • evitar el espacio en blanco por completo (al escribir una list plana de tags XML) afecta gravemente la legibilidad del código después (especialmente si contiene una combinación de tags secundarias y secundarias)
  • escribir una nueva label raíz en la misma línea que la label raíz anterior tampoco es ideal, ya que no permite descremar el código rápido ya que da una printing de dos tags adyacentes en lugar de una label raíz