Al contribuir a un proyecto, necesita un lugar seguro para escribir y refinar código antes de que afecte a la base de código principal. Las ramas, los forks, los commits y las solicitudes de extracción funcionan conjuntamente para darte ese espacio, de modo que puedas experimentar, registrar el trabajo de forma incremental y proponer cambios terminados para su revisión.
Aislar tu trabajo con ramas y forks
La mayoría del trabajo comienza creando una copia aislada del código que puede cambiar libremente.
- Use una rama cuando tenga acceso de escritura a un repositorio. Una rama le permite desarrollar una característica, corregir un error o experimentar en un área independiente del repositorio sin afectar a otras ramas. Se crea una rama a partir de una rama existente, normalmente la rama predeterminada.
- Utiliza un fork cuando no tengas permiso de escritura o cuando quieras total independencia respecto al proyecto original. Una bifurcación es un repositorio separado que comparte el código y la configuración de visibilidad con el repositorio original "upstream". Tiene sus propias ramas, problemas y solicitudes de incorporación de cambios. Desde un fork, también puede abrir pull requests para el repositorio original.
Normalmente, una rama es la opción más sencilla cuando ya colabora en un repositorio compartido. Una bifurcación suele ser la mejor opción para contribuir a proyectos de código abierto, cuando es posible que no se tenga acceso de escritura al repositorio original.
Comprobación del trabajo con confirmaciones
A medida que escribe código, se guardan grupos pequeños y significativos de cambios como confirmaciones. Cada confirmación registra una instantánea del trabajo junto con un mensaje que describe lo que ha cambiado, lo que facilita el seguimiento del historial, revisar los cambios y comprender cómo evolucionó el código.
Confirmar con frecuencia en la rama o bifurcación le permite:
- Divida un cambio mayor en pasos revisables.
- Revierta a un estado anterior si un experimento no funciona.
- Proporcione a los revisores un historial claro de cómo llegó al cambio final.
Proponer cambios con pull requests
Cuando tu trabajo esté listo para compartirse, abres una pull request para proponer fusionar tus cambios en la rama base. Una solicitud de incorporación de cambios reúne las confirmaciones, una descripción del cambio y las herramientas que los revisores necesitan analizar y evaluar antes de combinarlas.
Puede abrir una solicitud de incorporación de cambios mientras el trabajo todavía está en curso mediante la creación de una solicitud de incorporación de cambios de borrador, que comparte los cambios sin solicitar formalmente la revisión. Esto resulta útil cuando desea recibir comentarios anticipados o desea ejecutar comprobaciones automatizadas en el código.
Mantener el código actualizado y optimizado
Mientras una solicitud de incorporación de cambios está abierta, la rama base puede seguir cambiando a medida que otras personas integran sus cambios. Para mantener los cambios limpios y reducir los conflictos, puede hacer lo siguiente:
- Combine o vuelva a basar la rama base en la rama con frecuencia para que la diferencia permanezca centrada en lo que introduce el cambio. GitHub muestra de forma predeterminada una comparación de tres puntos, comparando tu rama con el punto en el que se separó de la base.
- Haz un rebase para ordenar un historial de confirmaciones desordenado —reordenando, combinando o reformulando confirmaciones— antes de solicitar una revisión.
- Resolver conflictos de fusión cuando Git no pueda combinar automáticamente cambios en conflicto.
Trabajar dentro de los controles de repositorio
Los colaboradores experimentados funcionan dentro de los límites de protección que define un repositorio. Estos controles determinan dónde puedes enviar cambios, quién debe aprobar tu trabajo y qué debe cumplirse antes de que se fusione.
- Las ramas protegidas y los conjuntos de reglas pueden bloquear inserciones directas en ramas importantes, requerir confirmaciones de historial lineal o firmadas y requerir comprobaciones de estado o revisiones antes de la combinación.
- Los responsables del código reciben automáticamente una solicitud de revisión cuando tus cambios afectan a archivos de los que son responsables, así que ten en cuenta que necesitarás su aprobación en las áreas sensibles.
- Los conjuntos de reglas de inserción se pueden aplicar en toda una red de bifurcaciones, restringiendo las rutas de archivo, los tamaños o los nombres en cada bifurcación.
- Los ganchos de pre-recepción permiten a los administradores de GitHub Enterprise Server aplicar comprobaciones de políticas en el servidor antes de que se acepten las confirmaciones de cambios.
Una cadena de herramientas integrada
Las solicitudes de incorporación de cambios conectan el código a la automatización y los servicios que le ayudan a escribir código de forma rápida y segura.
- Code scanning y Dependabot exponen problemas de seguridad y dependencias vulnerables a medida que los cambios se mueven a través de una solicitud de incorporación de cambios, por lo que puede aplicar prácticas de codificación seguras al principio.
- GitHub Actions puede ejecutar la integración continua en cada push de tu solicitud de incorporación de cambios, compilando y probando tus cambios automáticamente.