web-dev-qa-db-fra.com

Comment appliquer un patch git quand on lui donne un numéro de pull

J'ai téléchargé une version trunk d'une base de code depuis git, et il y a des erreurs de construction. Apparemment, un correctif est maintenant disponible et j'ai reçu un e-mail:

voir https://github.com/JustinTulloss/zeromq.node/pull/47 pour le patch

Je suis nouveau sur git, donc je ne sais pas trop quoi faire de ce 'patch' en particulier, car la page ressemble plus à un fil de discussion.

Est-ce que quelqu'un sait comment obtenir/appliquer ce correctif à mon référentiel git cloné localement?

37

Enregistrez le patch quelque part. Si vous utilisez linux, vous pouvez utiliser curl:

curl -L https://github.com/JustinTulloss/zeromq.node/pull/47.patch > /tmp/47.patch

Pour appliquer le patch, utilisez git apply. Vous pouvez voir si le correctif s’appliquera proprement avec l’option check. Accédez à votre répertoire git et exécutez:

git apply --check /tmp/47.patch

S'il semble que vous souhaitiez appliquer le patch, décochez la case

git apply /tmp/47.patch
69
Andrew

Ajoutez simplement un .patch à la fin pour obtenir le patch:

https://github.com/JustinTulloss/zeromq.node/pull/47.patch

Vous pouvez faire quelque chose comme ci-dessous:

$ git checkout master
$ curl http://github.com/JustinTulloss/zeromq.node/pull/47.patch | git am
$ git Push Origin master

http://help.github.com/send-pull-requests/

19
manojlds

La règle semble avoir récemment changé.

Auparavant, nous avons pris un PR et ajouté un .patch à la fin pour obtenir le patch

http://github.com/[group]/[project]/pull/30583.patch

Mais maintenant, le lien est redirigé (301) vers

https://patch-diff.githubusercontent.com/raw/[group]/[project]/pull/30583.patch

Donc, si vous utilisez curl, vous pouvez diriger avec git apply commande pour appliquer un patch git à partir de la requête Pull

curl https://patch-diff.githubusercontent.com/raw/[group]/[project]/pull/30583.patch | git apply

Si le patch ne vous convient pas maintenant, utilisez git apply -R commande pour annuler la modification.

7
gasolin
git fetch -q Origin +refs/pull/47/merge:
git checkout -qf FETCH_HEAD
3
Halton Huo

Pour laisser git télécharger la requête pull 47 et la patcher dans mylocalbranch localement, exécutez:

git checkout -b mylocalbranch
git pull Origin pull/47/head

Si la demande d'extraction n'est pas sur le référentiel d'origine, exécutez

git remote add patchremote https://github.com/JustinTulloss/zeromq.node
git pull patchremote pull/47/head
3
thakis