tag - git config--global
Mi diff contiene espacios en blanco al final, ¿cómo deshacerme de él? (5)
He intentado editar un archivo php en TextWrangler con los finales de línea establecidos en Unix, en NetBeans y en vim. Cuando guardo el diff en un parche y luego trato de aplicarlo, da errores de espacio en blanco. Cuando git diff
puedo ver ^M
al final de mis líneas, pero si las elimino manualmente en vim, dice que mi archivo de parche está dañado y que el parche no se aplica en absoluto.
Creo un parche con el siguiente comando:
git diff > patchname.patch
Y lo aplico revisando una versión limpia del archivo para ser parcheado y mecanografiado
git apply patchname.patch
¿Cómo puedo crear este parche sin errores de espacios en blanco? He creado parches antes y nunca me he encontrado con este problema.
¿Estás seguro de que esos son errores difíciles? De forma predeterminada, git advertirá sobre los errores de espacios en blanco, pero seguirá aceptándolos. Si son errores graves, debe haber cambiado algunas configuraciones. Puede usar el --whitespace=
para git apply
para controlar esto por invocación. Tratar
git apply --whitespace=warn patchname.patch
Eso forzará el comportamiento predeterminado, que es advertir pero aceptar. También puede usar --whitespace=nowarn
para eliminar las advertencias por completo.
La variable de configuración que controla esto es apply.whitespace
.
Para referencia, los errores de espacio en blanco aquí no son errores con su parche. Es un estilo de código que git, de forma predeterminada, se quejará cuando aplique parches. En particular, no le gusta los espacios en blanco que se arrastran. De manera similar, git diff
resaltará los errores de espacios en blanco (si está enviando a un terminal y el color está activado). El comportamiento predeterminado es advertir, pero aceptar el parche de todos modos, porque no todos los proyectos son fanáticos de los espacios en blanco.
Creo que la pregunta de cómo lidiar con el espacio en blanco ha sido respondida adecuadamente, pero usted preguntó de dónde viene. Usted mencionó ^M
al final de las líneas: así es como Git muestra los finales de línea de Windows. Tal vez intente ejecutar dos2unix
en sus archivos de origen antes de crear parches, o use un editor que mantenga los finales de línea originales.
La solución de una línea es:
emacs <filename> -f delete-trailing-whitespace -f save-buffer -f kill-emacs
fuente: https://wiki.gnome.org/Projects/GnomeShell/Development/WorkingWithPatches
Prueba el parche -p1 <nombre_archivo.patch
git apply --reject --whitespace=fix mychanges.path