web-dev-qa-db-fra.com

Comment appliquer le correctif `git diff` sans que Git ne soit installé?

Comment mon client peut-il appliquer le correctif créé par git diff sans que git ne soit installé? J'ai essayé d'utiliser la commande patch mais elle demande toujours le nom du fichier à patcher.

276
Andrey Kuznetsov
git diff > patchfile

et

patch -p1 < patchfile

fonctionne, mais comme beaucoup de personnes l’ont remarqué dans les commentaires et autres réponses, le correctif ne comprend pas les ajouts, les suppressions et les renommés. Il n'y a pas d'autre option que git apply patchfile si vous avez besoin de gérer le fichier ajoute, supprime et renomme.


EDIT décembre 2015

Les dernières versions de la commande patch (2.7, publiée en septembre 2012) prennent en charge la plupart des fonctionnalités du format "diff - git", notamment les renomations et les copies, les modifications d’autorisation et les différences de liens symboliques (mais pas encore les diffs binaires) ( annonce de sortie ).

Donc, à condition d'utiliser la version actuelle/la dernière version de patch, il n'est pas nécessaire d'utiliser git pour pouvoir appliquer ses diff à un patch.

414
Andrey Kuznetsov

essaye ça:

patch -p1 < patchfile
73
suppie

Utilisation

git apply patchfile

si possible.

patch -p1 < patchfile 

a des effets secondaires potentiels.

git apply gère également les ajouts, suppressions et renommements de fichiers s'ils sont décrits au format git diff, ce que patch ne fera pas. Enfin, git apply est un modèle "tout appliquer ou tout annuler" où tout est appliqué ou rien ne l'est, alors que patch peut partiellement appliquer des fichiers de correctif, laissant ainsi votre répertoire de travail dans un état étrange.

50
Sola Yang

J'utilise

patch -p1 --merge < patchfile

De cette façon, les conflits peuvent être résolus comme d'habitude.

7
denis.peplin