¿Qué son las solicitudes de extracción de Git y cómo las uso?
Las solicitudes de extracción son una característica de los servicios de git en línea como Github y Gitlab. Permiten que cualquier persona solicite que se agreguen cambios, incluso si no tienen acceso al repositorio. Discutiremos cómo funcionan y cómo puede usarlos para la colaboración de código abierto.
¿Qué hace una solicitud de extracción?
no importa cómo se vea,git
Como herramienta, es un sistema completamente descentralizado. Esto significa que el repositorio en Github.com y el repositorio en su computadora local no son diferentes entre sí. En lugar de conectarse a Github para trabajar en el repositorio, copia el código de Github a su repositorio local y trabaja allí.
Cuando desee impulsar cambios, puede confirmar y ejecutargit push
, para enviar sus actualizaciones a un «remoto» determinado, que puede ser cualquier otro repositorio de Git, pero generalmente es un servicio de alojamiento en línea como Github, Bitbucket o Gitlab. Esto actualizará el repositorio remoto para sincronizarlo con el suyo.
Sin embargo, esto solo funciona si tiene permiso para enviar confirmaciones, generalmente configuradas con una contraseña o clave SSH. Esto solo está disponible para los miembros de la organización que controlan el repositorio; de lo contrario, todos pueden cambiar el historial de Git. Si no eres miembro de la organización, ¿qué haces si quieres hacer un cambio?
Bueno, hay una segunda forma de actualizar un repositorio de Git:git pull
. Probablemente haga esto con bastante frecuencia cada vez que sus compañeros de trabajo realicen cambios que son presionados. En este caso, está extrayendo confirmaciones del repositorio remoto y sincronizándolas con su repositorio local.
Sin embargo, Git está descentralizado, por lo que realmente no hay diferencia entre tu repositorio y un repositorio remoto.en realidad puedesgit pull
Ejecutar hacia atrás desde el servidor es el núcleo de lo que hace que las solicitudes de extracción funcionen.
Una solicitud de extracción es simplemente decirle al servidor remoto (y a quien lo mantenga) que tiene algunas confirmaciones más nuevas que desea que revisen e integren con el repositorio remoto. Si aceptan los cambios, el repositorio remotogit pull
Ejecute, integre el código en su repositorio local sin necesidad de claves SSH autorizadas.
Un pilar de la colaboración de código abierto
Las solicitudes de extracción a menudo se usan para bibliotecas de código abierto. Después de todo, gran parte del motivo del código abierto es que cualquier desarrollador puede contribuir al proyecto si su código es útil.
Las solicitudes de extracción son las que hacen que funcione. Los mantenedores del proyecto, los administradores que lo controlan, generalmente revisan la solicitud de extracción y deciden si integran el código o si es necesario corregir algún error antes de que esté listo.
Una solicitud de extracción no es exactamente una función en sí mismagit
, por lo que su implementación exacta variará según el servicio. Sin embargo, para Github, encontrará solicitudes de incorporación de cambios en la barra de menú del repositorio, que muestra una lista de solicitudes abiertas y cerradas que puede filtrar.
Si hace clic en cualquiera de ellos, puede ver los comentarios realizados por el solicitante y las confirmaciones relacionadas con ellos.
Si es el mantenedor del repositorio, puede revisar y fusionar las solicitudes de extracción. O, si tiene un problema para discutir, puede dejar un comentario y trabajar juntos en el código. Esta es una gran razón por la cual los espacios públicos como Github son excelentes para la colaboración de código abierto, incluso algo tan simple como cambiar la redacción de un documento puede ser realizado en colaboración por cualquier persona.
Las solicitudes de extracción son diferentes de los problemas. El seguimiento de problemas es una función de muchos servicios, como Github, que permite corregir errores fácilmente y colaborar públicamente en nuevas funciones. Esencialmente, cada problema tiene un tema que puede ser discutido por los mantenedores y la comunidad. P.ej,dotnet/csharplang
es el repositorio oficial de debates sobre cómo diseñar C# como lenguaje de programación. Si observa los problemas, encontrará muchas personas discutiendo el concepto de futuras iteraciones del lenguaje:
No todos los problemas dan como resultado solicitudes de incorporación de cambios. No importa si el problema lo soluciona el mantenedor. Si un colaborador resuelve el problema, deberá enviar una solicitud de extracción.
Todas las solicitudes de extracción se rechazan o dan como resultado directamente cambios de código en el repositorio. Los problemas son solo una forma de rastrear el progreso del desarrollo y qué errores deben corregirse.
Hacer una solicitud de extracción
Nuevamente, los pasos exactos variarán según el servicio que use, pero la mayoría de las colaboraciones de código abierto se realizan en Github, por lo que le mostraremos los pasos.
Vaya al repositorio del que desea extraer y haga clic en «Nueva solicitud de extracción» en la pestaña «Solicitudes de extracción»:
Tienes dos opciones aquí. Si es miembro del repositorio y desea fusionar su rama de funciones en la rama principal, puede elegir estas dos ramas.
Si está utilizando un repositorio de código abierto, deberá bifurcar el repositorio y enviarlo a Github con su propia cuenta. Luego puede elegir «comparar entre bifurcaciones» para fusionar su rama maestra en su rama maestra.
Una vez hecho esto, la solicitud de extracción estará abierta para discusión, y solo tiene que esperar una respuesta del mantenedor.
Mientras tanto, puede verificar el estado de todas las solicitudes de extracción en las que ha contribuido utilizando la pestaña Solicitudes de extracción en la barra de encabezado principal.