git apply falla con el error "el parche no se aplica"

Resuelto Glory to Russia asked hace 13 años • 13 respuestas

Tengo un parche llamado my_pcc_branch.patch.

Cuando intento aplicarlo, aparece el siguiente mensaje:

$ git apply --check my_pcc_branch.patch
warning: src/main/java/.../AbstractedPanel.java has type 100644, expected 100755
error: patch failed: src/main/java/.../AbstractedPanel.java:13
error: src/main/java/.../AbstractedPanel.java: patch does not apply

¿Qué significa?

¿Como puedo solucionar este problema?

Glory to Russia avatar Jan 23 '11 02:01 Glory to Russia
Aceptado

git apply --reject --whitespace=fix mychanges.patchtrabajó para mi.

Explicación

La --rejectopción le indicará a git que no falle si no puede determinar cómo aplicar un parche, sino que aplique los fragmentos individuales que puede aplicar y cree archivos rechazados ( .rej) para los fragmentos que no puede aplicar. Wiggle puede "aplicar [estos] parches rechazados y realizar diferencias por palabras".

Además, --whitespace=fixadvertirá sobre errores de espacios en blanco e intentará solucionarlos, en lugar de negarse a aplicar un fragmento que de otro modo sería aplicable.

Ambas opciones juntas hacen que la aplicación de un parche sea más robusta contra fallas, pero requieren atención adicional con respecto al resultado.

Para obtener la documentación completa, consulte https://git-scm.com/docs/git-apply .

user1028904 avatar Mar 13 '2013 02:03 user1028904

Johannes Sixt de la lista de correo [email protected] sugirió utilizar los siguientes argumentos de línea de comando:

git apply --ignore-space-change --ignore-whitespace mychanges.patch

Esto resolvió mi problema.

Glory to Russia avatar Jan 28 '2011 20:01 Glory to Russia

Cuando todo lo demás falla, pruebe la opción git applyde--3way .

git apply --3way patchFile.patch

--3way
Cuando el parche no se aplica limpiamente, recurre a la combinación de 3 vías si el parche registra la identidad de los blobs a los que se supone que debe aplicarse y tenemos esos blobs disponibles localmente, posiblemente dejando los marcadores de conflicto en los archivos en el árbol de trabajo para que el usuario lo resuelva. Esta opción implica la opción --index y es incompatible con las opciones --reject y --cached.

El caso de error típico aplica la mayor cantidad posible del parche y te deja con conflictos que resolver en git como lo haces normalmente. Probablemente un paso más fácil que la rejectalternativa.

ruffin avatar Dec 11 '2017 15:12 ruffin

Este comando aplicará el parche y no lo resolverá, dejando archivos defectuosos como *.rej:

git apply --reject --whitespace=fix mypath.patch

Sólo tienes que resolverlos. Una vez resuelto ejecute:

git -am resolved
Ivan Voroshilin avatar Sep 12 '2013 13:09 Ivan Voroshilin