¿Es mejor comenzar una solicitud de extracción o realizar una confirmación de fusión local en el maestro?

12

He estado usando GitHub durante bastante tiempo y solía empujar mis ramas de características y luego iniciar una Solicitud de extracción que yo mismo fusioné. Descubrí que me ayudó a hacer un seguimiento de dónde fusioné las ramas.

Pero recientemente, he estado leyendo más y más sobre cómo funciona Git y me di cuenta de que puedo usar los merge-commits para referirme cuando fusioné ramas.

Entonces, ¿qué debo hacer al fusionar una rama de características en la maestra:
realizar una confirmación de fusión en la maestra y luego empujarla hacia arriba O empujar la rama local e iniciar una solicitud de extracción?

He leído Presentación de solicitudes de extracción para un equipo de 2 personas: ¿fusionar mis propias solicitudes? y ¿Cuál es el flujo de trabajo con 2 personas en un proyecto y las solicitudes de extracción abierta ¿Debo de una rama en el repositorio oficial o el tenedor? pero ninguno de ellos parece responder a lo que estoy buscando.

Ashhar Hasan
fuente
2
¿Qué siente exactamente que le falta a esas respuestas?
RubberDuck
El primero habla de ello desde el sentido de que las solicitudes de extracción deben ser revisadas por pares. El segundo ofrece un flujo de trabajo. El tercero ni siquiera está relacionado.
Ashhar Hasan
1
Estoy mirando esto desde las Mejores prácticas o Cómo mantener un buen punto de vista de la historia de git .
Ashhar Hasan
1
Cuando fusiono un RP, lo hago fusionando la sucursal localmente. Esto me permite asegurarme de que la fusión se aplica correctamente y volver a ejecutar las pruebas antes de publicar el resultado. Las solicitudes de extracción de GitHub son solo una formalización de este flujo de trabajo, Git en sí mismo no tiene un concepto de relaciones públicas.
amon
2
Cuando un RP se fusiona, produce un commit de fusión en master, por lo que no creo que esto haga ninguna diferencia en el historial de git. Por lo tanto, no creo que haya ninguna razón para usar uno u otro, aparte de su preferencia personal entre la línea de comando y la interfaz de usuario de Github.
Ixrec

Respuestas:

14

mecanismo de git-fusión:
Usando git merge featuremientras que en la rama principal se fusione featurecon mastery produce una merge-commit(si el sarmiento no puede ser reenviado rápido) en la historia de Git. Para forzar un merge-commithecho, use la --no-ffopción con merge.

Mecanismo de solicitud de extracción de fusión:
cuando comenzamos una solicitud de extracción en GitHub, se crea un lugar GitHub Issuedonde las personas pueden hablar y discutir los compromisos en el RP antes de fusionarlo. Cuando un PR se fusiona en GitHub, hace exactamente lo mismo que git merge feature.

¿Qué tengo que hacer?
Entonces, en lo que respecta a la historia, no hay diferencia entre los dos.
Y en lo que respecta a la contribución, sus contribuyentes no tendrán que hacer nada diferente para las dos situaciones. Son lo mismo (menos la pequeña charla agradable).

Mejores prácticas:
y no pude encontrar las mejores prácticas, pero la lógica dice que los RP no son de mucha ayuda si solo hay una sola persona en el repositorio.

@lxrec y @amon me ayudaron a llegar a esta conclusión.

Ashhar Hasan
fuente
55
Consejo: git mergepodría no registrar una confirmación de fusión si puede hacer un "avance rápido". Para forzar una confirmación de fusión, puede agregar la --no-ffopción.
amon
Prefiero hacer git-merge en local en lugar de hacerlo en githuib.com, si tuviera que hacer algo así en github.com preferiría no hacerlo directamente en la rama maestra, prefiero tomar una rama no maestra que primero configurarse en modo de preparación antes de ponerlo a disposición para la producción.
Ciasto piekarz
5

Como dijo Ashhar , técnica e históricamente no hay diferencia. Para proyectos con un equipo pequeño, prefiero fusionarme directamente en lugar del paso adicional de crear un RP. Sin embargo, cuando una característica necesita revisión / retroalimentación o cuando es un WIP y más de una persona estará trabajando en ella, tiendo a abrir un RP y agregar una lista de tareas a la descripción del RP.

Tenga en cuenta que git mergepuede usar el avance rápido si no hay cambios en el maestro, por lo que es posible que desee usarlo git merge --no-ff. Tiendo a no hacerlo.

En resumen, solo use relaciones públicas cuando necesite una discusión. De lo contrario, simplemente fusionar directamente.

Louay Alakkad
fuente
1
También vale la pena mencionar que la discusión y los comentarios sobre una solicitud de extracción pueden provenir de fuentes automáticas y de miembros del equipo. Si tiene un servidor CI configurado, puede proporcionar resultados de compilación y prueba para que nunca combine algo que rompa la compilación en el maestro.
Eric