Mi diff contiene espacios en blanco al final - ¿cómo deshacerse de él?
He intentado editar un archivo php en TextWrangler con terminaciones de línea establecidas en Unix, en NetBeans y en vim. Cuando guardo la diferencia en un parche y luego intento aplicarla, se producen errores de espacios en blanco. Cuando escribo git diff
puedo ver ^M
al final de mis líneas, pero si los elimino manualmente en vim, dice que mi archivo de parche está dañado, y luego el parche no se aplica en absoluto.
Creo un parche con el siguiente comando:
git diff > patchname.patch
Y lo aplico comprobando un limpio versión del archivo a parchear y escribir
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.
5 answers
¿Estás seguro de que esos son errores difíciles? Por defecto, git advertirá sobre errores de espacios en blanco, pero aun así los aceptará. Si son errores difíciles, debe haber cambiado algunas configuraciones. Puede usar la bandera --whitespace=
a git apply
para controlar esto por invocación. Try
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 espacios en blanco aquí no son errores con su parche. Es un estilo de código del que git, por defecto, se quejará al aplicar parches. En particular, no le gustan los espacios en blanco al final. Del mismo modo, git diff
resaltará los errores de espacios en blanco (si está emitiendo a una 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.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-20 18:49:17
git apply --reject --whitespace=fix mychanges.path
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-12 15:09:13
Pruebe patch-p1
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-27 17:21:03
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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-19 00:20:55
Creo que la pregunta de cómo lidiar con el espacio en blanco ha sido adecuadamente respondida, pero usted preguntó de dónde venía. Mencionaste ^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 fuente antes de crear parches, o use un editor que mantenga los finales de línea originales.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-20 14:01:58