Fusionar sin conflictos de espacios en blanco


179

Tengo un problema en el que tengo una gran confirmación que cambia alrededor de mil líneas de código, eliminando espacios en blanco desde el final de las líneas y eliminando espacios antes de las pestañas.

También hay alrededor de 50 solicitudes de extracción para este proyecto, que tendrán conflictos cuando se fusione mi confirmación. ¿Hay alguna manera de que se pueda configurar git para que al fusionar futuras confirmaciones, ignore los conflictos en los que uno de ellos sea solo un cambio de espacio en blanco?

No es posible modificar git o usar una herramienta de terceros, pero usar un gancho está bien.


Respuestas:


246
 git merge -Xignore-all-space

O (más preciso)

 git merge -Xignore-space-change

debería ser suficiente para ignorar todos los conflictos relacionados con el espacio durante la fusión.

Ver git diff :

--ignore-space-change

Ignorar los cambios en la cantidad de espacios en blanco.
Esto ignora los espacios en blanco al final de la línea y considera que todas las demás secuencias de uno o más caracteres de espacios en blanco son equivalentes.

--ignore-all-space

Ignora los espacios en blanco al comparar líneas.
Esto ignora las diferencias incluso si una línea tiene espacios en blanco donde la otra línea no tiene ninguno.

ks1322 agrega en los comentarios un buen consejo:

Vale la pena fusionarse --no-commity revisar la fusión antes de la confirmación real .


El OP Callum Macrae informa que, en ese caso, la fusión continúa sin interrupciones, y los espacios finales contenidos en los parches de solicitud de extracción se aplican a los archivos locales.
Sin embargo, el OP utiliza un enlace previo al compromiso que se encarga de dichos espacios finales.
(Supongo que es un poco similar a este , también mencionado aquí ).


Aquí se hace referencia al gancho de precompromiso del OP :

Además de eliminar los espacios en blanco al final, elimina uno o tres espacios antes de las pestañas (tengo el ancho de pestañas establecido en 4) y agrega EOL.
He recibido informes de que el código que agrega la EOL elimina el archivo en Windows, pero no he podido replicarlo.


1
De mis pruebas hasta ahora, parece que elimina todos los cambios de espacio en blanco en el archivo. Sin embargo, ahora estoy usando el enlace previo a la confirmación para eliminar el espacio en blanco de cola, por lo que no es un problema.
callumacrae

1
@CallumMacrae: ok, y gracias por los comentarios. Nuevamente, he agregado su enlace en la respuesta para mayor visibilidad.
VonC

1
git merge -Xignore-space-change- bueno, no puedo decir con certeza esto no funcionó ... . El único espacio en blanco que estaba tratando de eliminar permaneció. Git es una mierda.
jww

1
Vale la pena fusionarse --no-commity revisar la fusión antes de la confirmación real.
ks1322

1
-Xignore-all-space parece no hacer nada sobre los espacios en blanco y - gnore-space-change no fue reconocido como una opción por git
Preza8
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.