Respuestas:
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
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.
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".
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
"GitLab resuelve conflictos creando una confirmación de fusión en la rama de origen que no se fusiona automáticamente en la rama de destino. Esto permite que la confirmación de fusión sea revisada y probada antes de que se fusionen los cambios, evitando que los cambios no intencionados ingresen a la rama de destino sin revisión o interrupción La construcción."
GitLab 12.1 (julio de 2019) presenta una diferencia:
" Solicitudes de fusión para asuntos confidenciales "
Al debatir, planificar y resolver problemas confidenciales, como las vulnerabilidades de seguridad, puede ser particularmente difícil para los proyectos de código abierto permanecer eficientes ya que el repositorio de Git es público.
A partir de 12.1, ahora es posible que los problemas confidenciales en un proyecto público se resuelvan dentro de un flujo de trabajo optimizado utilizando el botón Crear solicitud de fusión confidencial, que le ayuda a crear una solicitud de fusión en una bifurcación privada del proyecto.
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 ".
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