Creación de una solicitud de extracción desde una sesión de código de Claude con gh
Una vez que Claude Code ha realizado un conjunto de cambios en una sesión de trabajo, puede confirmarlos y abrir una solicitud de extracción (Pull Request) en GitHub sin salir de esa sesión, utilizando la CLI de gh.
Resumen
Abrir una PR desde una sesión significa que Claude Code ejecuta los mismos comandos git y gh que un desarrollador escribiría manualmente.
No existe una "función de PR de Claude Code" separada; la CLI de gh es la herramienta oficial de línea de comandos de GitHub, y Claude Code simplemente la invoca.
Esto significa que cualquier cosa que puedas hacer con gh pr create tú mismo, Claude Code puede hacerlo como parte de la finalización de una tarea que le hayas solicitado.
También significa que la PR resultante se ve completamente normal para tu equipo: el mismo formato de título, el mismo cuerpo, las mismas comprobaciones ejecutándose en ella.
El único requisito previo es que gh esté instalado y autenticado en el entorno en el que se ejecuta la sesión.
Receta
Tarjeta de receta de referencia rápida: lista para copiar y pegar.
git add -A
git commit -m "Add rate limiting to the search endpoint"
git push -u origin HEAD
gh pr create --title "Add rate limiting to the search endpoint" \
--body "Adds a sliding-window rate limiter to the search endpoint. Fixes #482."Cuándo usarlo:
- Le has pedido a Claude Code que implemente una característica o una corrección, y el cambio está listo para ser revisado.
- Quieres que el título y el cuerpo de la PR se escriban en la misma sesión que realizó el cambio, para que la descripción coincida con el diff real.
- Estás trabajando en una rama de características y quieres evitar cambiar a un navegador para abrir la PR.
- Quieres un patrón repetible que también puedas insertar en un script o paso de CI más adelante.
Ejemplo de trabajo
#!/usr/bin/env bash
set -euo pipefail
# 1. Confirma que hay algo para confirmar.
git status --short
# 2. Prepara y confirma el cambio.
git add -A
git commit -m "Add rate limiting to the search endpoint
Adds a token-bucket limiter in middleware/rate-limit.py, applied to
the /api/search route. Limit is 60 requests/minute per API key."
# 3. Envía la rama actual, creándola en el remoto si es necesario.
git push -u origin HEAD
# 4. Abre la PR contra la rama base predeterminada del repositorio.
gh pr create \
--title "Add rate limiting to the search endpoint" \
--body "$(cat <<'EOF'
## Resumen
- Agrega un limitador de velocidad de cubo de tokens a /api/search
- Límite: 60 solicitudes/minuto por clave API
- Devuelve HTTP 429 con un encabezado Retry-After cuando se excede
## Plan de prueba
- [x] Pruebas unitarias para los límites de la ventana del limitador
- [x] Prueba manual: excedí el límite localmente y confirmé la respuesta 429
Fixes #482
EOF
)"
# 5. Imprime la URL de la nueva PR para confirmación.
gh pr view --web=false --json url --jq .urlLo que esto demuestra:
- Usar un heredoc (
$(cat <<'EOF' ... EOF)) para pasar un cuerpo de PR de varios párrafos sin problemas de escape. - Realizar un
pushcon-upara que la rama sea rastreada en el remoto antes de que se ejecutegh pr create. - Estructurar el cuerpo de la PR con un Resumen y un plan de prueba, lo que coincide con lo que la mayoría de los equipos orientados a la revisión esperan.
- Confirmar el resultado con
gh pr view --json urlen lugar de asumir que el comando se ejecutó correctamente. - Referenciar un número de incidencia (
Fixes #482) para que GitHub vincule y cierre automáticamente la incidencia al fusionar.
Análisis detallado
Cómo funciona
gh pr createlee la información de seguimiento de la rama actual para determinar contra qué hacerpush, y la rama predeterminada del repositorio (normalmentemain) como base de la PR a menos que se pase--baseexplícitamente.- El comando requiere que la rama ya exista en el remoto;
git push -u origin HEADlo maneja en un solo paso, tanto haciendopushcomo configurando el seguimiento. --titley--bodyson opcionales; omitirlos hace queghentre en un prompt interactivo, por lo que el uso impulsado por la sesión casi siempre los proporciona explícitamente.- Una vez creada,
gh pr createimprime la URL de la nueva PR en stdout, lo cual es útil para que una sesión te informe. - Internamente,
ghse autentica utilizando el token almacenado porgh auth login, la misma credencial utilizada para cualquier otro subcomando degh.
Banderas de un vistazo
| Bandera | Propósito |
|---|---|
--title | Establece el título de la PR directamente, omitiendo el prompt interactivo. |
--body | Establece la descripción de la PR; admite texto de varias líneas a través de un heredoc o --body-file. |
--base | Anula la rama base predeterminada (por ejemplo, --base develop). |
--draft | Abre la PR como borrador, útil para trabajos aún en progreso. |
--reviewer | Solicita un revisor o equipo específico por nombre de usuario/identificador. |
--fill | Rellena automáticamente el título y el cuerpo del historial de confirmaciones de la rama en lugar de especificarlos. |
Notas de Bash
# --fill ahorra escritura cuando la rama tiene una confirmación limpia cuyo mensaje
# ya se lee como un buen título y cuerpo de PR.
git add -A
git commit -m "Add rate limiting to the search endpoint"
git push -u origin HEAD
gh pr create --fillErrores comunes
- Olvidar hacer
pushantes degh pr create.gh pr createnecesita que la rama exista primero en el remoto; si omitesgit push -u origin HEAD, el comando fallará pidiéndote que hagaspush. Solución: haz siemprepushcon-uinmediatamente antes de crear la PR, o deja que el prompt de--filllo haga por ti. - Confirmar directamente en la rama predeterminada. Abrir una PR de
maincontramainno tiene sentido;gh pr createdará un error o se comportará de forma inesperada. Solución: crea y hazcheckoutde una rama de características (git checkout -b <nombre-de-rama>) antes de realizar cambios. - Un token de autenticación de
ghcaducado o faltante. Los comandos fallan silenciosamente con un error de autenticación sigh auth loginnunca se ejecutó o el token caducó. Solución: ejecutagh auth statusprimero; vuelve a autenticarte congh auth loginsi informa que no has iniciado sesión. - Un cuerpo de PR con caracteres especiales sin escapar. Pasar
--bodycomo una cadena simple entre comillas puede fallar con comillas o backticks incrustados. Solución: usa un heredoc (como en el Ejemplo de trabajo) o escribe el cuerpo en un archivo y pasa--body-file. - Asumir que
gh pr createabre contra la rama que pretendías. Si no estás en la rama que crees que estás, la PR terminará con un diff incorrecto. Solución: ejecutagit statusogit branch --show-currentinmediatamente antes de crear la PR para confirmar. - Abrir una PR sin una incidencia vinculada cuando tu equipo requiere una. Algunos procesos de revisión esperan que cada PR haga referencia a una incidencia de seguimiento. Solución: incluye
Fixes #<número>oRefs #<número>en el cuerpo, y confirma el número de incidencia antes de ejecutar el comando.
Alternativas
| Alternativa | Usar cuando | No usar cuando |
|---|---|---|
| Abrir la PR manualmente en la interfaz web de GitHub | Quieres revisar el diff visualmente antes de escribir la descripción | Ya estás en una sesión de Claude Code y quieres evitar cambiar de contexto |
gh pr create --fill | La rama tiene un mensaje de confirmación limpio y bien escrito | El cambio abarca varias confirmaciones y necesita un resumen escrito a mano |
| Un flujo de trabajo de GitHub Actions que abre PRs en un horario (por ejemplo, actualizaciones de dependencias) | La PR está completamente automatizada y no necesita un juicio impulsado por la sesión | El cuerpo de la PR necesita describir el razonamiento específico del trabajo de esta sesión |
git push más un paso de CI separado que abre la PR | La pipeline de tu equipo ya se encarga de la creación de PR como política | Quieres que la PR se abra inmediatamente, en el mismo paso que la confirmación |
Preguntas frecuentes
¿Necesito decirle a Claude Code el comando gh exacto que debe ejecutar?
No, puedes preguntar en lenguaje sencillo ("confirma esto y abre una PR"), y Claude Code ejecuta los comandos git y gh equivalentes por sí mismo; conocer los comandos subyacentes solo te ayuda a comprender y verificar lo que hizo.
¿Qué rama base apunta gh pr create por defecto?
La rama predeterminada configurada del repositorio, normalmente main o master, a menos que pases --base para apuntar a otra cosa.
¿Puedo abrir una PR en borrador en lugar de una lista para revisar?
Sí, agrega --draft a gh pr create; las PR en borrador no solicitan revisiones automáticamente y señalan que el trabajo aún está en progreso.
¿Qué sucede si la rama ya tiene una PR abierta?
gh pr create te informará que ya existe una PR para esa rama y no creará una duplicada; usa gh pr view para ver la existente en su lugar.
¿gh pr create ejecuta alguna comprobación de CI automáticamente?
Abrir la PR activa los flujos de trabajo de GitHub Actions que estén configurados para ejecutarse en eventos pull_request en el repositorio; gh por sí mismo no ejecuta comprobaciones directamente.
¿Puedo especificar revisores al crear la PR?
Sí, con --reviewer <nombre_de_usuario> (o un identificador de equipo); puedes pasarlo varias veces para más de un revisor.
¿Hay alguna forma de previsualizar la PR antes de que se cree?
gh pr create tiene un modo interactivo que muestra una vista previa y pide confirmación cuando omites --title/--body; el uso con scripts omite esa vista previa al proporcionar ambas banderas directamente.
¿Qué pasa si mi mensaje de confirmación es largo y de varias líneas?
Usa un heredoc para el argumento de la bandera -m, la misma técnica que se muestra para --body en el Ejemplo de trabajo, para que los saltos de línea se conserven correctamente.
¿El título de la PR debe coincidir con el mensaje de confirmación?
No, son independientes; --title establece el título de la PR explícitamente independientemente de lo que digan los mensajes de confirmación, a menos que uses --fill, que deriva ambos del historial de confirmaciones.
¿Puede Claude Code abrir una PR contra un fork en lugar del repositorio de origen?
Sí, gh pr create admite --repo para apuntar a un repositorio específico, que es como se abre una PR desde un fork de vuelta al proyecto upstream.
¿Cómo confirmo que la PR se creó correctamente?
Verifica la URL impresa por el comando, o ejecuta gh pr view inmediatamente después, lo que imprime los detalles de la PR asociada a la rama actual si existe una.
¿Qué es lo mínimo que necesito instalado para que esto funcione?
Solo la CLI de gh, autenticada una vez a través de gh auth login, y un repositorio git con un remoto de GitHub configurado; no se requiere ninguna configuración adicional de Claude Code.
Relacionado
- Conceptos básicos de integración de GitHub: instalación y autenticación de la CLI de
ghantes de usarla en una sesión. - Cómo Claude Code encaja en tu flujo de trabajo de solicitudes de extracción de GitHub: dónde se sitúa la apertura de una PR en relación con la revisión y la respuesta a los comentarios.
- Responder automáticamente a los comentarios de revisión de PR: el siguiente paso natural una vez que esta PR recibe comentarios.
- Mejores prácticas de integración de GitHub: patrones para mantener las PR abiertas por sesión seguras y revisables.
Versiones de la pila: Escrito con la línea de modelos de Claude actual a partir de ~junio de 2026: Claude Fable 5, Claude Opus 4.8, Claude Sonnet 5 (el predeterminado) y Claude Haiku 4.5. Los nombres de los modelos, los precios y las características del producto cambian rápidamente; verifica los detalles actuales en platform.claude.com/docs antes de confiar en ellos.