name - github tags
¿Cómo puedo ver una solicitud de extracción de GitHub? (11)
Accidentalmente terminé escribiendo casi lo mismo provisto por git-extras. Entonces, si prefiere un solo comando personalizado en lugar de instalar un montón de otros comandos adicionales, simplemente coloque este archivo git-pr
en algún lugar de su $PATH
y luego simplemente escriba:
git pr 42
// or
git pr upstream 42
// or
git pr https://github.com/peerigon/phridge/pull/1
Me gustaría verificar una solicitud de extracción creada previamente (creada a través de la interfaz web de GitHub). Busqué y encontré diferentes lugares donde un refs / pull o refs / pull / pr
Pero cuando agrego fetch = +refs/pull/*/head:refs/remotes/origin/pr/*
al archivo de configuración de git y hago una búsqueda de git
¿Qué estoy haciendo mal? ¿Debería GitHub crear automáticamente las cosas pull / xyz, o tengo que configurar algo?
El problema con algunas de las opciones anteriores es que si alguien realiza más commits al PR luego de abrir el PR, no le darán la versión más actualizada. Para mí, lo que funcionó mejor es ir a PR y presionar ''Commits'', desplazarse hasta la parte inferior para ver el hash commit más reciente. y luego simplemente use git checkout, es decir,
git checkout <commit number>
en el ejemplo anterior
git checkout 0ba1a50
En referencia a la respuesta de Steven Penny, es mejor crear una rama de prueba y probar el RP. Entonces esto es lo que harías.
- Crea una rama de prueba para fusionar el PR en local. Asumiendo que estás en la rama principal:
git checkout -b test
- Obtenga los cambios de relaciones públicas en la rama de prueba
git pull origin pull/939/head:test
Ahora, puede probar los cambios de forma segura en esta rama de prueba local (en este caso, prueba nombrada) y una vez que esté satisfecho, puede combinarlo como siempre desde GitHub.
Esto se recuperará sin tener que nombrar una rama:
git pull origin pull/939/head
¿Cómo obtengo una solicitud de extracción específica en mi máquina?
Para Bitbucket, necesita reemplazar la palabra pull
para pull-requests
.
En primer lugar, puede confirmar el estilo de URL de solicitud de extracción mediante el git ls-remote origin
.
$ git ls-remote origin |grep pull
f3f40f2ca9509368c959b0b13729dc0ae2fbf2ae refs/pull-requests/1503/from
da4666bd91eabcc6f2c214e0bbd99d543d94767e refs/pull-requests/1503/merge
...
Como puede ver, es refs/pull-requests/1503/from
lugar de refs/pull/1503/from
Entonces puedes usar los comandos de cualquiera de las respuestas.
Para buscar un RP remoto en su repositorio local,
git fetch origin pull/ID/head:BRANCHNAME
donde ID es la identificación de solicitud de extracción y nombre de rama es el nombre de la nueva rama que desea crear. Una vez que haya creado la rama, simplemente
git checkout BRANCHNAME
Prefiero buscar y pagar sin crear una sucursal local y estar en HEAD estado desconectado . Me permite comprobar rápidamente la solicitud de extracción sin contaminar mi máquina local con sucursales locales innecesarias.
git fetch upstream pull/ID/head && git checkout FETCH_HEAD
donde ID
es un ID de solicitud de extracción y upstream
donde se crea la solicitud de extracción original (podría ser origin
, por ejemplo).
Espero que ayude.
Puede usar el comando git config
para escribir una nueva regla en .git/config
para obtener solicitudes de extracción del repositorio:
$ git config --local --add remote.origin.fetch ''+refs/pull/*/head:refs/remotes/origin/pr/*''
Y luego solo:
$ git fetch origin
Fetching origin
remote: Counting objects: 4, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 4 (delta 2), reused 4 (delta 2), pack-reused 0
Unpacking objects: 100% (4/4), done.
From https://github.com/container-images/memcached
* [new ref] refs/pull/2/head -> origin/pr/2
* [new ref] refs/pull/3/head -> origin/pr/3
Si está siguiendo el flujo de trabajo "github fork", donde crea una bifurcación y agrega el repositorio remoto de subida:
14:47 $ git remote -v
origin [email protected]:<yourname>/<repo_name>.git (fetch)
origin [email protected]:<yourname>/<repo_name>.git (push)
upstream [email protected]:<repo_owrer>/<repo_name>.git (fetch)
upstream [email protected]:<repo_owner>/<repo_name>.git (push)
para ingresar a su rama actual, su comando se vería así:
git pull upstream pull/<pull_request_number>/head
para ingresar a una nueva sucursal, el código sería:
git fetch upstream pull/<pull_request_number>/head:newbranch
Esa esencia describe lo que sucedió cuando haces una búsqueda de git:
Obviamente, cambie la url github para que coincida con la URL de su proyecto. Termina luciendo así:
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = [email protected]:joyent/node.git
fetch = +refs/pull/*/head:refs/remotes/origin/pr/*
Ahora busca todas las solicitudes de extracción:
$ git fetch origin
From github.com:joyent/node
* [new ref] refs/pull/1000/head -> origin/pr/1000
* [new ref] refs/pull/1002/head -> origin/pr/1002
* [new ref] refs/pull/1004/head -> origin/pr/1004
* [new ref] refs/pull/1009/head -> origin/pr/1009
...
Para ver una solicitud de extracción en particular:
$ git checkout pr/999
Branch pr/999 set up to track remote branch pr/999 from origin.
Switched to a new branch ''pr/999''
Tiene varios scripts enumerados en los problemas 259 para automatizar esa tarea.
El proyecto git-extras propone el comando git-pr
(implementado en PR 262 )
git-pr
(1) - Comprueba una solicitud de extracción localmente
SINOPSIS
git-pr <number> [<remote>]
git-pr clean
DESCRIPCIÓN
Crea una rama local basada en un número de solicitud de extracción de GitHub, y luego cambia a esa rama.
El nombre del control remoto desde el que se va a recuperar. Predeterminado a
origin
EJEMPLOS
Esto verifica la solicitud de extracción
226
desde elorigin
:
$ git pr 226
remote: Counting objects: 12, done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 12 (delta 3), reused 9 (delta 3)
Unpacking objects: 100% (12/12), done.
From https://github.com/visionmedia/git-extras
* [new ref] refs/pull/226/head -> pr/226
Switched to branch ''pr/226''