Frecuentemente publicamos actualizaciones de nuestra documentación. Es posible que la traducción de esta página esté en curso. Para conocer la información más actual, visita la documentación en inglés. Si existe un problema con las traducciones en esta página, por favor infórmanos.

Esta versión de GitHub Enterprise se discontinuó el 2020-11-12. No se realizarán lanzamientos de patch, ni siquiera para problemas de seguridad críticos. Para obtener un mejor desempeño, más seguridad y nuevas características, actualiza a la última versión de GitHub Enterprise. Para obtener ayuda con la actualización, contacta al soporte de GitHub Enterprise.

Acerca de las fusiones de las solicitudes de extracción

Puedes fusionar solicitudes de extracción conservando todas las confirmaciones de cambios en una rama de característica, combinando todas las confirmaiones en una única confirmación o cambiando de base confirmaciones individuales desde la rama head hacia la rama base.

En este artículo

Cuando haces clic en la opción predeterminada Merge pull request (Fusionar solicitud de extracción) en una solicitud de extracción de tu instancia de servidor de GitHub Enterprise, todas las confirmaciones de la rama de característica se agregan a la rama de base en una confirmación de fusión. La solicitud de extracción se fusiona usando la opción --no-ff.

Para fusionar solicitudes de extracción, debes tener permisos de escritura sobre el repositorio.

standard-merge-commit-diagram

Combinar y fusionar las confirmaciones de cambios de tus solicitudes de extracción

Cuando seleccionas la opción Squash and merge (Combinar y fusionar) en una solicitud de extracción en la tu instancia de servidor de GitHub Enterprise, las confirmaciones de la solicitud de extracción se combinan en una única confirmación. En lugar de ver todas las confirmaciones individuales de un contribuyente de una rama de tema, las confirmaciones se combinan en una confirmación y se fusionan en la rama predeterminada. Las solicitudes de extracción con confirmaciones combinadas se fusionan usando la fast-forward option (opción de avance rápido).

Para combinar y fusionar solicitudes de extracción, debes tener permisos de escritura en el repositorio, y el repositorio debe permitir la fusión de combinaciones.

commit-squashing-diagram

Puedes combinar y fusionar para crear un historial Git más optimizado en tu repositorio. Los compromisos de trabajo en curso son útiles cuando se trabaja en una rama de característica, pero no son tan importantes para retenerlos en el historial Git. Si combinas estas confirmaciones en una única confirmación al fusionar con la rama predeterminada, puedes conservar los cambios originales usando un historial Git claro.

Mensaje de fusión para una fusión de combinación

Cuando combinas y fusionas, GitHub genera un mensaje de confirmación que puedes cambiar si así lo deseas. El mensaje predeterminado depende de si la solicitud de extracción contiene varias confirmaciones o solo una.

Cantidad de confirmacionesResumenDescripción
Una confirmaciónEl título del mensaje de confirmación para la confirmación única, seguido de el número de la solicitud de extracciónEl cuerpo de texto del mensaje de la confirmación para la confirmación única
Más de una confirmaciónEl título de la solicitud de extracción, seguido por el número de dicha solicitudUn listado de los mensajes de confirmación para todas las confirmaciones combinadas, en orden cronológico

Combinar y fusionar una rama extensa

Si planeas seguir trabajando en la rama principal de una solicitud de extracción después de que ésta se fusiona, te recomendamos no combinarla y fusionarla.

Cuando creas una solicitud de extracción, GitHub identifica la confirmación más reciente que se encuentre tanto en la rama principal como en la rama base: la confirmación del ancestro común. Cuando combinas y fusionas la solicitud de extracción, GitHub crea una confirmación en la rama base que contiene todos los cambios que realizaste en la rama principal desde la confirmación del ancestro común.

Ya que esta confirmación se realizó únicamente en la rama base y no en la principal, el ancestro común de las dos ramas permanece sin cambios. Si sigues trabajando en la rama principal, entonces crea una solicitud de extracción nueva entre las dos ramas, la solicitud de extracción incluirá todas las confirmaciones que se hayan realizado desde el ancestro común, incluyendo aquellas que combinaste y fusionaste en la solicitud de extracción previa. Si no hay conflictos, puedes fusionar estas confirmaciones con seguridad. Sin embargo, este flujo de trabajo hace que los conflictos de fusión sean más probables. Si sigues combinando y fusionando las solicitudes de extracción para una rama principal extensa, tendrás que resolver los mismos conflictos repetidamente.

Cambiar de base y fusionar las confirmaciones de cambios de tus solicitudes de extracción

Cuando seleccionas la opción Rebase and merge (Cambiar de base y fusionar) en la tu instancia de servidor de GitHub Enterprise, todas las confirmaciones de la rama de tema (o rama de encabezado) se agregan a la rama de base por separado sin una confirmación de fusión. Las solicitudes de extracción con confirmaciones con cambio de base se fusionan usando la fast-forward option (opción de avance rápido).

Para cambiar de base y fusionar solicitudes de extracción, debes tener permisos de escritura en el repositorio, y el repositorio debe permitir la fusión de cambio de base.

El comportamiento de cambio de base y de fusión en GitHub Enterprise varía levemente con respecto a git rebase. El cambio de base y la fusión en GitHub siempre actualizarán la información de la persona que confirma el cambio y crearán nuevas SHA de confirmación, mientras que el git rebase externo a GitHub no cambia la información de la persona que confirma el cambio cuando ocurre el cambio de base superponiendo un compromiso de antepasado. Para obtener más información sobre git rebase, consulta el capítulo "Git rebase" del libro Pro Git.

Para obtener una representación visual de git rebase, consulta el capítulo "Ramas de Git - Cambio de base" del libro Pro Git.

No es posible cambiar de base y fusionar automáticamente en tu instancia de servidor de GitHub Enterprise cuando:

  • La solicitud de extracción tiene conflictos de fusión.
  • Cambiar de base las confirmaciones desde la rama base a la rama encabezado conlleva a tener conflictos.
  • Cambiar de base las confirmaciones se considera "no seguro", como cuando un cambio de base es posible sin conflictos de fusión, pero produciría un resultado diferente del que produciría una fusión.

Si aún quieres cambiar de base las confirmaciones, pero no puedes cambiar de base y fusionar automáticamente en tu instancia de servidor de GitHub Enterprise, debes hacer lo siguiente:

  • Cambiar de base la rama de tema (o rama de encabezado) hacia la rama base de forma local en la línea de comandos.
  • Resolver cualquier conflicto de fusión en la línea de comandos.
  • Realizar un empuje forzado de las confirmaciones cambiadas de base a la rama de tema de la solicitud de extracción (o rama de encabezado remota).

Cualquiera con permisos de escritura en el repositorio, entonces puede fusionar los cambios usando el botón Cambiar de base y fusionar en tu instancia de servidor de GitHub Enterprise.

Leer más