474 votes

git : le patch ne s'applique pas

J'ai un certain patch appelé my_pcc_branch.patch.

Lorsque j'essaie de l'appliquer, j'obtiens le message suivant :

$ 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'est-ce que cela signifie ?

Comment puis-je résoudre ce problème ?

0 votes

Y a-t-il des fichiers AbstractedPanel.java.rej qui traînent ? Typiquement, cela signifie qu'une ligne bot a changé dans la source ainsi que dans le patch (ici la ligne 13 semble être affectée).

0 votes

Non, je n'ai pas trouvé de fichiers *.rej.

0 votes

Je ne sais pas pourquoi la réponse acceptée devrait résoudre le problème (je soupçonne donc que c'est un faux problème), mais ne le fait pas. has type 100644, expected 100755 suppose qu'il y a une erreur de permissions chmod quelque part ?

1voto

MShubat Points 21

Si le patch n'est appliqué que partiellement, mais pas dans son intégralité. Assurez-vous que vous êtes dans le bon répertoire lorsque vous appliquez le correctif.

Par exemple, j'ai créé un fichier patch dans le dossier du projet parent contenant le fichier .git fichier. Cependant, j'essayais d'appliquer le correctif à un niveau inférieur. Il n'appliquait les changements qu'à ce niveau du projet.

0voto

Solomon Ucko Points 1145

Mon problème est que j'ai lancé git diff puis a exécuté git reset --hard HEAD puis j'ai réalisé que je voulais annuler, donc j'ai essayé de copier la sortie de git diff dans un fichier et en utilisant git apply mais j'ai reçu un message d'erreur indiquant que "le patch ne s'applique pas". Après être passé à patch et d'essayer de l'utiliser, J'ai réalisé qu'une partie du diff était répétée pour une raison quelconque, et après avoir supprimé le double , patch (et vraisemblablement aussi git apply ) a fonctionné.

0voto

Juste au cas où, j'ai constaté que cela s'est produit pour moi lorsque les changements que j'essaie d'appliquer, existent déjà dans le fichier.

-1voto

Bhanu Points 1

Ce que j'ai cherché n'est pas exactement indiqué ici dans l'OS, j'écris pour le bénéfice d'autres personnes qui pourraient chercher quelque chose de similaire. J'ai rencontré un problème avec un fichier (présent dans l'ancien repo) qui a été supprimé dans le repo. Et lorsque j'applique le patch, il échoue car il n'a pas pu trouver le fichier à appliquer. (donc mon cas est que git patch échoue car le fichier a été supprimé) #git apply --reject' a donné un aperçu mais ne m'a pas permis de trouver la solution. Je n'ai pas pu utiliser wiggle car il n'est pas disponible pour nous dans nos serveurs de construction. Dans mon cas, j'ai résolu ce problème en supprimant l'entrée du "fichier qui a été supprimé dans le repo" du fichier patch que j'ai essayé d'appliquer, de sorte que toutes les autres modifications ont été appliquées sans problème (en utilisant la fusion à 3 voies, en évitant les erreurs d'espace blanc), puis en fusionnant manuellement le contenu du fichier supprimé à l'endroit où il a été déplacé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X