Comment mon client peut-il appliquer le correctif créé par git diffsans git installé? J'ai essayé d'utiliser la patchcommande mais elle demande toujours le nom du fichier à corriger.
patchne prend pas entièrement en charge ce format.
Comment mon client peut-il appliquer le correctif créé par git diffsans git installé? J'ai essayé d'utiliser la patchcommande mais elle demande toujours le nom du fichier à corriger.
patchne prend pas entièrement en charge ce format.
Réponses:
git diff > patchfile
et
patch -p1 < patchfile
fonctionne mais comme beaucoup de gens l'ont remarqué dans les commentaires et autres réponses, le patch ne comprend pas les ajouts, les suppressions et les renommages. Il n'y a pas d'option mais git apply patchfilesi vous avez besoin de gérer les ajouts, les suppressions et les renommages de fichiers.
EDIT décembre 2015
Les dernières versions de la patchcommande (2.7, publiées en septembre 2012) prennent en charge la plupart des fonctionnalités du format "diff --git", y compris les renommages et les copies, les modifications des autorisations et les différences de lien symbolique (mais pas encore les différences binaires) ( annonce de publication ).
Donc, à condition d'utiliser la version actuelle / la plus récente, patchil n'est pas nécessaire d'utiliser gitpour pouvoir appliquer son diff en tant que patch.
git diff > patchfile, maispatch -p1 < patchfile
relativeoption comme:git diff --no-prefix --relative=my/relative/path > patchfile
patch -p1 < patchfilene nécessite pas l'installation de git. La première commande illustre la commande de génération de diff, pas son application.
git diff from_branch > patchfile; git checkout from_branch; git patch -p1 < patchfileougit diff from_branch to_branch > patchfile; ...
Utilisation
git apply patchfile
si possible.
patch -p1 < patchfile
a un effet secondaire potentiel.
git applygère également les ajouts, les suppressions et les renommages de fichiers s'ils sont décrits dans le git diffformat, ce qui patchne fonctionnera pas. Enfin, git applyest un modèle «appliquer tout ou abandonner tout» où tout est appliqué ou rien, alors que le correctif peut appliquer partiellement les fichiers de correctifs, laissant votre répertoire de travail dans un état étrange.
git applyc'est la meilleure façon de le faire, mais cette question demande spécifiquement comment appliquer le correctif sans Git installé .
--dry-run --verbosesont utiles pour déterminer quels seront les effets secondaires, le cas échéant. (en utilisant le patch v2.5.8)
git apply patchfile -... la seule réponse sensée ..." - c'est presque risible. Chaque fois que les développeurs OpenSSL m'envoient un patch à tester, Git ne l'applique pas. C'est à chaque fois. Je n'ai pas encore vu cet outil stupide appliquer un patch.
j'utilise
patch -p1 --merge < patchfile
De cette façon, les conflits peuvent être résolus comme d'habitude.