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
.
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.
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.
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.
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.