Eliminar retornos de carro (^M) de ciertas líneas sin modificar cada línea

Eliminar retornos de carro (^M) de ciertas líneas sin modificar cada línea

Tengo algunos archivos C++ bastante largos e git diff --checkinformo que hay algunos retornos de carro ^Men aproximadamente 15 líneas diferentes. Esto está en una máquina con Windows 7. Después de buscar varias soluciones, es decir, Advanced Save OptionsConversiones EOL de Visual Studio o Notepad++, todas parecen estar modificando cada línea, no solo aquellas de las que Git se queja. Esto da como resultado un git diff de cada línea que se reemplaza.

¿Podría deberse esto a que todos los cambios anteriores en estos archivos también tenían retornos de carro ^My las confirmaciones anteriores ignoraron las advertencias de retorno de carro?

La ejecución git config core.autocrlfdevuelve verdadero, pero la preparación de un archivo no hace nada cuando ejecuto git diff --cached --checkese archivo después de prepararlo.

¿Hay alguna forma de eliminarlos? Ir manualmente a la línea e intentar cambiar no parece ayudar.

Respuesta1

¿15 líneas?

En notepad++, elija reemplazar. Eligió extendido. Busque \r (que es ^M) y reemplácelo con nada (a menos que desee una nueva línea, luego reemplácelo con \n). Como no desea reemplazar todos los ^M, no presione reemplazar todos, elija los que desea reemplazar.

Si utiliza el bloc de notas normal de Windows, las ^M aparecerán como cuadros. Puedes quitar las cajas. Feo, pero funciona.

Respuesta2

Usardos2unix <file>si está en la línea de comandos. Arreglará los finales de línea necesarios o no hará nada si no se necesita nada. Haga una find . -name "*.cpp" -exec dos2unix {} +para hacer varios archivos. Luego compare con git diffantes de comprometerse.

Es mejor evitar terminar con finales de línea mixtos en los archivos. Puede resultar incómodo fusionarse y seguir el historial.

Algunos editores no cambiarán el estilo, pero creo que si incluso un ^M ingresa al archivo, algunos editores asumirán el estilo dos y cambiarán todos los finales de línea cuando escriban el archivo.

Generalmente es posible encontrar configuraciones para editores que harán que el editor se ciña al estilo que desea. Las configuraciones de final de línea y tabulación también suelen establecerse según el estilo.

Respuesta3

Git puede hacerlo automáticamente con git config --global core.autocrlf true.Pero lo hace en el momento del pago o en el momento del compromiso.Por lo tanto, git no mostrará los cambios preparados, pero debería encargarse silenciosamente de convertir SI su editor introduce algunos finales de línea nuevos no deseados.

Creo que uso dos2unix si los finales de línea no deseados ya están en el repositorio.

Para más detalles, vea la respuesta aquí: https://stackoverflow.com/questions/10418975/how-to-change-line-ending-settingsy leerhttp://git-scm.com/book/en/Customizing-Git-Git-Configuration#Formatting-and-Whitespace

Respuesta4

en una máquina con Windows puedes hacer, por ejemplo:

for /r %f in (*.js) do "c:\Program Files\git\usr\bin\dos2unix.exe" %f

esto eliminará los CR de todos los archivos con extensión .js desde el directorio actual hacia abajo

información relacionada