Comment mon client peut-il appliquer le correctif créé par git diff
sans git installé? J'ai essayé d'utiliser la patch
commande mais elle demande toujours le nom du fichier à corriger.
patch
ne prend pas entièrement en charge ce format.
Comment mon client peut-il appliquer le correctif créé par git diff
sans git installé? J'ai essayé d'utiliser la patch
commande mais elle demande toujours le nom du fichier à corriger.
patch
ne 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 patchfile
si 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 patch
commande (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, patch
il n'est pas nécessaire d'utiliser git
pour pouvoir appliquer son diff en tant que patch.
git diff > patchfile
, maispatch -p1 < patchfile
relative
option comme:git diff --no-prefix --relative=my/relative/path > patchfile
patch -p1 < patchfile
ne 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 < patchfile
ougit diff from_branch to_branch > patchfile; ...
Utilisation
git apply patchfile
si possible.
patch -p1 < patchfile
a un effet secondaire potentiel.
git apply
gère également les ajouts, les suppressions et les renommages de fichiers s'ils sont décrits dans le git diff
format, ce qui patch
ne fonctionnera pas. Enfin, git apply
est 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 apply
c'est la meilleure façon de le faire, mais cette question demande spécifiquement comment appliquer le correctif sans Git installé .
--dry-run --verbose
sont 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.