¿Cuál es la diferencia entre una solicitud de extracción y una solicitud de combinación?
En Github es una solicitud de extracción y en GitLab, por ejemplo, es una solicitud de fusión ... ¿Hay alguna diferencia entre ambos?
La función "solicitud de fusión" de GitLab es equivalente a la función "solicitud de extracción" de GitHub . Ambos son medios para extraer cambios de otra rama o bifurcación en su rama y fusionar los cambios con su código existente. Son herramientas útiles para la revisión de código y la gestión de cambios.
Un artículo de GitLab analiza las diferencias al nombrar la función:
Las solicitudes de combinación o extracción se crean en una aplicación de administración de git y le piden a una persona asignada que combine dos sucursales. Herramientas como GitHub y Bitbucket eligen la solicitud de extracción de nombre, ya que la primera acción manual sería extraer la rama de características. Herramientas como GitLab y Gitorious eligen la solicitud de fusión de nombre, ya que esa es la acción final que se le solicita al cesionario. En este artículo nos referiremos a ellos como solicitudes de fusión.
Una "solicitud de fusión" no debe confundirse con el git merge
comando. Tampoco debe confundirse una "solicitud de extracción" con el git pull
comando. Ambos git
comandos se utilizan detrás de escena tanto en las solicitudes de extracción como en las solicitudes de combinación, pero una solicitud de combinación / extracción se refiere a un tema mucho más amplio que solo estos dos comandos.
Son la misma característica
fuente
Desde mi punto de vista, significan la misma actividad pero desde diferentes perspectivas:
Piensa en eso, Alice hace algunos commits en el repositorio A, que fue bifurcado del repositorio B. de Bob
Cuando Alice quiere "fusionar" sus cambios en B, en realidad quiere que Bob "extraiga" estos cambios de A.
Por lo tanto, desde el punto de vista de Alice, es una "solicitud de fusión", mientras que Bob la ve como una "solicitud de extracción".
fuente
Hay una sutil diferencia en términos de gestión de conflictos. En caso de conflictos, una solicitud de extracción en Github dará como resultado una confirmación de fusión en la rama de destino . En Gitlab, cuando se encuentra un conflicto, las modificaciones realizadas se realizarán en una confirmación de fusión en la rama de origen .
Ver https://docs.gitlab.com/ee/user/project/merge_requests/resolve_conflicts.html
fuente
GitLab 12.1 (julio de 2019) presenta una diferencia:
" Solicitudes de fusión para asuntos confidenciales "
Consulte " Cuestiones confidenciales " del número 58583 .
Existe una característica similar en GitHub, pero implica la creación de una bifurcación privada especial, llamada " aviso de seguridad del mantenedor ".
fuente
Como se mencionó en respuestas anteriores, ambos tienen casi el mismo propósito. Personalmente, me gusta git rebase y merge request (como en gitlab). Le quita la carga al revisor / mantenedor, asegurándose de que al agregar la solicitud de fusión, la rama de características incluye todas las últimas confirmaciones realizadas en la rama principal después de que se crea la rama de características. Aquí hay un artículo muy útil que explica rebase en detalle: https://git-scm.com/book/en/v2/Git-Branching-Rebasing
fuente