with start new gitflow from feature create another git git-flow

start - GitFlow: fusionar con seguridad desarrollar cambios en una rama de características



git flow windows (3)

Recientemente comencé a trabajar en grandes características, así que creé una nueva feature/xyz rama feature/xyz . El problema es que esta función es grande, por lo que me tomará ~ 3 meses completarla. Me gustaría fusionar de forma segura el progreso que se ha hecho en el develop de mi rama de características, sin preocuparme de que los cambios de la rama de develop anularán las actualizaciones que ya hice en mi rama de características. Mi intento anterior de fusionar develop a feature/xyz terminó en algunos cambios que ya hice en la nueva característica que se está revertiendo.

¿Cuál sería el comando para lograr esto? Gracias


La única seguridad está en las combinaciones aprendidas, discernidas y frecuentes.

Solo usted comprende cómo se alinean el código en develop y la feature/xyz , nadie más. Es solo usted quien puede fusionar los dos flujos correctamente de una manera discernible. Incluso con las estrategias de fusión predeterminadas, que son mucho menos peligrosas que las -X theirs o las -X theirs , siempre hay que revisar el resultado.

Puede que necesites ayuda, por supuesto, y git te ofrecerá algo. Por ejemplo, puede usar las resoluciones grabadas de git; rerere a rerere para ayudar a tomar la misma decisión de fusión correcta después de haber tomado una inicialmente.

Un modelo bastante común y relativamente simple, que utiliza los nombres que ha proporcionado para las sucursales, podría funcionar para usted de esta manera.

  • develop es la rama donde se produce el impulso principal del desarrollo.
  • xyz es la rama donde desarrollas la característica xyz
  • xyz_stage es la rama donde se fusionan el código de develop y el código xyz , manteniendo esta rama estable en línea con los puntos estables respectivos de develop y xyz . Esta es también la rama que eventualmente fusionarías con el desarrollo cuando estés listo para lanzar la característica xyz o parte de ella.

Lo anterior asume que no solo fusiona xyz en xyz_stage sino que también fusiona el develop en xyz_stage de vez en cuando y asegúrese de que las porciones de xyz liberadas hasta el xyz_stage trabajo de xyz_stage y de que pasen las pruebas pertinentes junto con el código de develop .

Sin embargo, todavía tiene que elegir cómo hacer la rama xyz , donde trabaja en la función, consciente del progreso en el desarrollo.

La opción más limpia es: no lo hagas saber. Es por eso que tiene xyz_stage donde los dos flujos de desarrollo se unen. Este enfoque es factible y sano siempre que el desarrollo de xyz no sea prolongado.

La segunda opción es fusionar xyz_stage nuevo en xyz cuando esté satisfecho con la rama de ensayo. De esa manera, tendrá un punto estable en el que podrá continuar y desarrollar la función xyz en la parte superior.

Aquí hay una simple ilustración del proceso, con comentarios:


En mi experiencia, la única solución "segura" es inspeccionar y probar siempre el resultado de cualquier combinación de forma manual. --no-commit realizará la fusión y le permitirá inspeccionarla antes de cometer, o puede restablecer / enmendar, lo que le parezca más práctico. Obtener una herramienta de combinación de tres vías puede ser muy útil. Hay demasiadas formas en que las cosas se pueden romper sin que haya conflictos de fusión, por lo que depender de la fusión automática puede causarle problemas. Si tiene una cobertura de prueba del 100%, seguro, puede estar un poco más relajado, pero ¿cuántos proyectos pueden realmente afirmar eso? ;-)


Usa git merge -s recursive -X ours . Esto causará que los conflictos en las dos ramas se resuelvan siempre usando la versión en el directorio desprotegido ( feature/xyz en este caso).

Importante : al contrario de su título, esta estrategia no es necesariamente "segura" : las modificaciones de develop pueden entrar en conflicto con las feature/xyz . Como siempre, asegúrese de probar correctamente los cambios combinados.