Cómo aplicar un parche GIT cuando se le da un número de extracción
-
27-10-2019 - |
Pregunta
Descargué una versión troncal de una base de código de Git, y hay errores de compilación. Aparenty, un parche ahora está disponible y recibí un correo electrónico:
Consulte https://github.com/justintulloss/zeromq.node/pull/47 para parche
Soy nuevo en Git, así que no estoy muy seguro de qué hacer con este 'parche' especialmente, ya que la página se parece más a un hilo de discusión.
¿Alguien sabe cómo puedo obtener/aplicar este parche a mi repositorio Git clonado localmente?
Solución
Guarde el parche en alguna parte. Si está utilizando Linux, puede usar Curl:
curl -L https://github.com/JustinTulloss/zeromq.node/pull/47.patch > /tmp/47.patch
Para aplicar el uso del parche git apply
. Puede ver si el parche se aplicará limpiamente con el check
opción. Cambie a su directorio GIT y ejecute:
git apply --check /tmp/47.patch
Si parece que desea aplicar el parche, elimine la opción de verificación
git apply /tmp/47.patch
Otros consejos
Solo agrega un .patch
Al final para obtener el parche:
https://github.com/justintulloss/zeromq.node/pull/47.patch
Puedes hacer algo como a continuación:
$ git checkout master
$ curl http://github.com/JustinTulloss/zeromq.node/pull/47.patch | git am
$ git push origin master
La regla parece cambiar recientemente.
Anteriormente tomamos un PR y agregamos un .patch
Al final para obtener el parche
http://github.com/[group]/[project]/pull/30583.patch
Pero ahora el enlace es redirección (301) a
https://patch-diff.githubusercontent.com/raw/[group]/[project]/pull/30583.patch
Entonces si usas curl
, podrías entrar con git apply
comandar para aplicar un parche GIT desde la solicitud de extracción
curl https://patch-diff.githubusercontent.com/raw/[group]/[project]/pull/30583.patch | git apply
Si el parche no es adecuado para usted ahora, use git apply -R
Comando para revertir el cambio.
Para dejar que Git descargue la solicitud 47 y parche en mylocalbranch
localmente, ejecute:
git checkout -b mylocalbranch
git pull origin pull/47/head
Si la solicitud de extracción no está en el repositorio de origen, ejecute
git remote add patchremote https://github.com/JustinTulloss/zeromq.node
git pull patchremote pull/47/head
git fetch -q origin +refs/pull/47/merge:
git checkout -qf FETCH_HEAD