GitHub clon de pull request?


Me gustaría clonar un repositorio desde GitHub. El problema es que no quiero la rama principal; quiero la versión en esta solicitud de extracción no aprobada.

¿Es posible clonar la versión de solicitud de extracción en lugar del repositorio principal?

Author: Peter Mortensen, 2013-02-19

8 answers

Puede clonar la rama que desee utilizando la opción -b en el comando git clone.

En su caso, la rama que desea clonar es la rama fuente de la solicitud de extracción (feature/mongoose-support):

git clone https://github.com/berstend/frappe.git -b feature/mongoose-support /my_clone
 58
Author: inancsevinc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-01 00:05:24

La forma más fácil de hacerlo es así:

git fetch origin pull/2/head
git checkout -b pullrequest FETCH_HEAD

Ahora estará en una nueva rama que está en el estado de la solicitud de extracción.

 74
Author: Chronial,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-02-20 00:04:48
git fetch origin refs/pull/PR_NUMBER/head:NEW_LOCAL_BRANCH

Eg:

$ git fetch origin pull/611/head:pull_611
$ git checkout pull_611

Realiza cambios, commitalos, EMPUJA y abre nuevas relaciones públicas desde tu bifurcación en GitHub

 24
Author: wierzbiks,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-20 05:12:21

Puede seguir las instrucciones en este resumen para poder comprobar el control remoto directamente sin tener que averiguar su repositorio y rama.

Ejemplo de uso

Para uno de mis proyectos (github3.py) Tengo lo siguiente en mi github3.py/.git/config

[remote "github"]
    fetch = +refs/heads/*:refs/remotes/github/*
    fetch = +refs/pull/*/head:refs/remotes/github/pr/*
    url = [email protected]:sigmavirus24/github3.py

La primera línea es lo que es estándar para cada control remoto con la excepción de que github se reemplaza por el nombre del control remoto. Lo que esto significa es que las cabezas remotas (o las cabezas de las ramas en que servidor) se "mapean" a controles remotos locales con el prefijo github/. Así que si lo hiciera git fetch github y tuviera una rama en GitHub que no se notara localmente en mi máquina, descargaría la rama y podría cambiar a ella de la siguiente manera: git checkout -t github/branch_name.

La segunda línea hace lo mismo, pero lo hace para las solicitudes de extracción en lugar de las ramas git estándar. Es por eso que ves refs/pull/*/head. Obtiene el encabezado de cada pull request en GitHub y lo asigna a github/pr/#. Entonces, si alguien envía una solicitud de extracción y está numerada 62 (por ejemplo), usted haría:

git fetch github
git checkout -t github/pr/62

Y entonces estaría en una rama local llamada pr/62 (suponiendo que no exista ya). Es agradable y significa que no tienes que hacer un seguimiento de los controles remotos o ramas de otras personas.

 15
Author: Ian Stapleton Cordasco,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-02-19 14:07:55

Cuando un usuario envía una solicitud de extracción, está pidiendo que algunos cambios se fusionen desde una rama en su clon de una bifurcación de vuelta al repositorio de otro usuario.

Los cambios que desea se pueden obtener de la fuente de la solicitud de extracción. Para hacer esto, clona el repositorio del usuario (git://github.com/berstend/frappe.git), y luego echa un vistazo a la rama desde la que creó la pull request (feature/mongoose-support).

 5
Author: adrianbanks,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-02-19 00:43:50

Después de instalar git-extras

(cd /tmp && git clone --depth 1 https://github.com/tj/git-extras.git && cd git-extras && sudo make install)

Simplemente puede usar git pr

$ git pr 62 [remote]
 2
Author: megawac,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-16 01:49:21

Esa pull request muestra las confirmaciones de la bifurcación de esa persona para que pueda ver que está empujando sus cambios desde la rama feature/mongoose-support.

Puede clonar su repositorio y revisar esa rama

 0
Author: Kartik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-02-19 00:36:15
git clone git://github.com/dweldon/frappe
cd frappe
git pull origin pull/2/head

¿Cómo puedo obtener una solicitud de extracción no fusionada para una rama que no poseo?

 0
Author: Steven Penny,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:02:48