tag - tipos de etiquetas en git
"Fatal: parche corrupto en la línea XX" al organizar una línea (6)
Aparentemente, la GUI de Git requiere que los archivos finalicen con una nueva línea al organizar líneas individuales .
Estoy bastante seguro de que al menos en un punto en el tiempo, la puesta en escena de líneas individuales estaba bien, incluso sin una nueva línea al final del archivo, pero aparentemente eso ya no es posible. Acabo de toparme con este problema, tener líneas nuevas al final del archivo lo corrige y eliminarlo lo causa.
Recibo el siguiente error cuando intento representar una sola línea o varias líneas con la git gui (clic derecho -> líneas de escena para confirmación). No es la primera vez que me ocurre, y he encontrado otros que lo enfrentan. Sin embargo, no pude encontrar la manera de resolverlo.
¿Alguna vez alguien se encontró con este problema? ¿Hay algo que pueda hacer (organizar todo el archivo no es una solución real)
Actualización: Aquí hay un archivo que me da el siguiente error cuando trato de representar la línea eliminada.
@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/texture"
android:tileMode="repeat"
- android:dither="true"
>
</bitmap>
/ No newline at end of file
Aquí está el mensaje de error:
fatal: corrupt patch at line 14
curiosamente la siguiente multa ni siquiera tiene 14 líneas? nota finalizando archivo con una nueva línea no resolvió el problema
En realidad, esto sucede a menudo cuando editas ''-'' líneas.
Cuando elimina ''-'' y olvida agregar '''' (espacio) en lugar de
O, por error, agrega dos espacios y usa ''pestañas'' como identación
Abra su parche y compruebe que todas las líneas que desea dejar intactas se inician con '''' (un espacio)
He visto que algunas personas usan --ignore-space-change
--ignore-whitespace
--whitespace=fix
como solución, pero esta es otra cosa con la que no debes mezclar.
Abra su parche y compruebe que todas las líneas que desea dejar intactas se inician con '''' (espacio)
UPD
también es posible que su editor tenga la opción: "Eliminar espacios en la línea final" Entonces, cuando en su editor guarde el parche:
-Line with space at end <--- NOTICE: Here one space at the end
+Line with no space at end<--- Here no space
Su editor eliminar el espacio final y el parche se convierten así:
-Line with space at end<--- Here no space. Patch will FAIL!!!
+Line with no space at end<--- Here no space also
Este parche FALLARÁ porque el archivo de origen no tiene línea:
-Line with space at end<---
Tiene:
-Line with space at end <---
UPD2
Entonces, si está en su parche en la siguiente línea
android:tileMode="repeat"
Tu editor elimina el espacio de entrenamiento. Parche fallará
Estaba obteniendo este error mientras montaba hunks.
El "espacio en blanco" mencionado aquí me recordó que tengo, en mis opciones de git diff, "-w", que se salta el espacio en blanco mientras se difiere.
Quité esa bandera (usando las "Opciones ... de git-gui"), y pude organizar trozos sin el error. Luego lo agregué nuevamente (porque normalmente no quiero ver diferencias de espacios en blanco al examinar qué ha cambiado).
No estoy seguro de que esto te ayude, pero es inofensivo intentarlo y deshacerlo fácilmente.
Inspirado por la respuesta de kyl191, se me ocurrió una solución simple para este problema:
agregue carácter de nueva línea al final de su archivo
esconder todos los cambios
git stash
agregue carácter de nueva línea al final de su archivo una vez más, para que tenga un carácter de nueva línea en su archivo actual, así como en su versión escondida
etapa el trozo correspondiente (contiene solo su nueva línea)
git stage <your file>
mostrar los cambios del alijo
git stash pop
Ahora debería poder trazar líneas simples a través de la interfaz gráfica de usuario sin este error. Esto funciona porque después de montar solo la parte que contiene la nueva línea, la diferencia con la versión recuperada del almacenamiento ya ve un archivo que termina con un carácter de nueva línea.
La GUI de Git no puede agregar / eliminar líneas del índice cuando el fragmento con el que está trabajando es demasiado grande (es decir, demasiadas líneas sucesivas modificadas).
Mi solución: si los cambios no son un "muro de rosa" (si hay algunas líneas sin modificar en el medio del fragmento), vaya a editar> opciones y reduzca el número de líneas en el contexto de diffs. Si esto no funciona, estás jodido; use otra herramienta (como la línea de comando, por ejemplo).
Tuve este problema porque traté de agregar una nueva línea a mi parche en emacs y eliminó automáticamente la nueva línea al final cuando la guardé.
Si está usando emacs para agregar una nueva línea al final de su parche, también puede estar quitándola nuevamente. Abrí otro editor de texto para agregar mi nueva línea y funcionó.