2012-03-19 17 views
125

Tengo un problema donde tengo una confirmación grande que cambia unas mil líneas de código, elimina espacios en blanco del final de las líneas y elimina espacios antes de las pestañas.Fusión sin conflictos de espacios en blanco

También hay unas 50 solicitudes de extracción para este proyecto, que tendrán conflictos cuando se combine mi confirmación. ¿Hay alguna forma de configurar git para que al fusionar compromisos futuros ignore conflictos donde uno de ellos es solo un cambio de espacio en blanco?

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

+0

Posible duplicado de [git whitespace woes] (http: // stackoverflow.com/questions/1316364/git-whitespace-woes) –

+0

@CeesTimmerman: Err, es dos meses más joven que este. – callumacrae

+0

"solicitada el 22 de agosto de 2009 a las 16:27", eso es más de 2 años más. –

Respuesta

174
git merge -Xignore-all-space 

O (más precisa)

git merge -Xignore-space-change 

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

Ver git diff:

--ignore-space-change 

Ignorar cambios en la cantidad de espacio 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 en espacio en blanco son equivalentes.

--ignore-all-space 

Ignorar espacios en blanco cuando se comparan las líneas.
Esto ignora las diferencias incluso si una línea tiene espacios en blanco donde la otra línea no tiene ninguno.

ks1322 añade en los comentarios un buen consejo:

Cabe fusionarse con --no-commit y revisar la fusión antes de cometer real.


Los OP Callum Macrae informes de que, en ese caso, la combinación de sobreseimiento ininterrumpida, y los espacios finales contenidas en los parches de solicitud de extracción se aplican a los archivos locales.
Sin embargo, el OP utiliza un enlace precompromiso que se encarga de dichos espacios finales.
(supongo que es un poco similar a this one, también referenced here).


del OP pre-commit gancho es referenced here:

Además de eliminar los espacios en blanco de salida, que elimina uno a tres espacios antes de lengüetas (He tamaño de la pestaña ajustado a 4), y añade EOLs .
He recibido informes de que el código que agrega el EOL elimina el archivo en Windows, pero no ha podido replicarlo.

+0

Gracias! ¿Eso ignorará el espacio en blanco justo donde hay conflictos, o todos los cambios de espacio en blanco en el archivo? – callumacrae

+0

@CallumMacrae buena pregunta. Tendré que probar ese caso. – VonC

+0

De mis pruebas hasta el momento, parece que elimina todos los cambios de espacio en blanco en el archivo. Sin embargo, ahora estoy utilizando el gancho de precompromiso para eliminar el espacio en blanco de cola, por lo que no es un problema. – callumacrae

Cuestiones relacionadas