git - upstream - pull request vs merge request
Cómo aplicar un parche git cuando se le da un número de extracción (5)
Descargué una versión troncal de una base de código de git, y hay errores de compilación. Aparently un parche ahora está disponible, y recibí un correo electrónico:
ver https://github.com/JustinTulloss/zeromq.node/pull/47 para el 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 en mi repositorio git clonado localmente?
Guarde el parche en alguna parte. Si usas Linux, puedes usar curl:
curl -L https://github.com/JustinTulloss/zeromq.node/pull/47.patch > /tmp/47.patch
Para aplicar el parche use git apply
. Puede ver si el parche se aplicará limpiamente con la opción de check
. 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
La regla parece haber cambiado recientemente.
Anteriormente tomamos un PR y añadimos un .patch
al final para obtener el parche
http://github.com/[group]/[project]/pull/30583.patch
Pero ahora el enlace se redirecciona (301) a
https://patch-diff.githubusercontent.com/raw/[group]/[project]/pull/30583.patch
Por lo tanto, si utiliza curl
, puede canalizar con el comando git apply
para aplicar un parche git de la solicitud de extracción
curl https://patch-diff.githubusercontent.com/raw/[group]/[project]/pull/30583.patch | git apply
Si el parche no es el adecuado para usted ahora, use git apply -R
comando para deshacer el cambio.
Para que git descargue la solicitud de extracción 47 y la mylocalbranch
localmente en mylocalbranch
, 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
Simplemente 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
git fetch -q origin +refs/pull/47/merge:
git checkout -qf FETCH_HEAD