Combinación de confirmaciones
Cuando hace clic en la opción predeterminada Merge pull request (Combinar solicitud de incorporación de cambios) en una solicitud de incorporación de cambios en your GitHub Enterprise Server instance, todas las confirmaciones de la rama de características se agregan a la rama base en una confirmación de fusión. La solicitud de incorporación de cambios se combina mediante la opción--no-ff
.
Para combinar las solicitudes de incorporación de cambios, debe tener permisos de escritura en el repositorio.
Squash y combinación de las confirmaciones
Al seleccionar la opción Squash and merge en una solicitud de incorporación de cambios en la your GitHub Enterprise Server instance, las confirmaciones de la solicitud de incorporación de cambios se fusionan mediante combinación con "squash" 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 incorporación de cambios con confirmaciones con fusión mediante combinación con "squash" se combinan mediante la opción de avance rápido.
Para fusionar las solicitudes de incorporación de cambios mediante combinación con "squash" y combinación, debe tener permisos de escritura en el repositorio y el repositorio debe permitir la fusión mediante combinación con "squash".
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 realizas una fusión mediante combinación con "squash", GitHub genera un mensaje de confirmación que se puede editar. El mensaje predeterminado depende del número de confirmaciones de la solicitud de incorporación de cambios, sin incluir las confirmaciones de combinación.
Cantidad de confirmaciones | Resumen | Descripción |
---|---|---|
Una confirmación | El título del mensaje de confirmación para la confirmación única, seguido de el número de la solicitud de extracción | El cuerpo de texto del mensaje de la confirmación para la confirmación única |
Más de una confirmación | El título de la solicitud de extracción, seguido por el número de dicha solicitud | Un listado de los mensajes de confirmación para todas las confirmaciones combinadas, en orden cronológico |
Cantidad de confirmaciones | Resumen | Descripción |
---|---|---|
Una confirmación | El título del mensaje de confirmación para la confirmación única, seguido de el número de la solicitud de extracción | El cuerpo de texto del mensaje de la confirmación para la confirmación única |
Más de una confirmación | El título de la solicitud de extracción, seguido por el número de dicha solicitud | Un listado de los mensajes de confirmación para todas las confirmaciones combinadas, en orden cronológico |
Combinar y fusionar una rama extensa
Si tiene previsto continuar trabajando en la rama principal de una solicitud de incorporación de cambios después de combinar la solicitud de incorporación de cambios, le recomendamos que no fusione mediante combinación con "squash" y combine la solicitud de incorporación de cambios.
Al crear una solicitud de incorporación de cambios, GitHub identifica la confirmación más reciente que se encuentra tanto en la rama principal como en la rama base: la confirmación antecesora 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.
Fusionar mediante cambio de base y combinar las confirmaciones
Al seleccionar la opción Rebase and merge en una solicitud de incorporación de cambios en your GitHub Enterprise Server instance, todas las confirmaciones de la rama de tema (o rama de encabezado) se agregan a la rama base por separado sin una confirmación de fusión. De este modo, el comportamiento de fusionar mediante cambio de base y combinar es similar a una combinación de avance rápido, ya que mantiene un historial de proyectos lineal. Sin embargo, el rebase lo logra al rescribir el historial de confirmaciones en la rama base con confirmaciones nuevas.
El comportamiento de fusión mediante cambio de base y combinación en GitHub Enterprise Server varía ligeramente con respecto a git rebase
. La fusión mediante cambio de base y combinación en GitHub siempre actualizará la información de la persona que confirma el cambio y creará SHA de confirmación, mientras que git rebase
fuera de GitHub no cambia la información de la persona que confirma el cambio cuando se produce la fusión mediante cambio de base sobre una confirmación anterior. Para más información sobre git rebase
, vea git-rebase en la documentación de Git.
Para fusionar mediante cambio de base y combinar solicitudes de incorporación de cambios, debe tener permisos de escritura en el repositorio y el repositorio debe permitir la combinación de fusión mediante cambio de base.
Para obtener una representación visual de git rebase
, vea el capítulo "Git Branching - Rebasing" (Creación de ramas en Git: fusión mediante cambio de base) del libro Pro Git.
No es posible cambiar de base y fusionar automáticamente en your GitHub Enterprise Server instance 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 your GitHub Enterprise Server instance, 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.
- Resuelva los conflictos de combinació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, puede combinar los cambios mediante el botón de fusión mediante cambio de base y combinación en your GitHub Enterprise Server instance.