Git –no fusionada con –squash

Prefiero fusionar mis twigs de características con --squash ya que me permite hacer un seguimiento cuando se agregaron las características, y generalmente son funciones completas que necesito bisect . Encuentro que esto da una muy buena representación del estado de la twig estable en el time.

Sin embargo, al usar --squash twigs de --squash fusionadas aparecen debajo --no-merged lugar de debajo de " --merged . Esto hace que a veces sea difícil hacer un seguimiento del estado de cada twig (es decir, cuando termina). No quiero eliminar las twigs 'terminadas' como sucedió, las he tenido que revisar para bisectar aún más y también otras razones (a veces un problema requiere múltiples routes de ataque hasta que se resuelve, y lo he encontrado valioso tener eso documentado).

Hay alguna forma de:

  • Have --merged y --no-merged --merged reconocido que las twigs aplastadas de hecho se han fusionado.

o

  • Archive twigs fusionadas (aplastadas) en el sentido de que no aparecerán en ninguna de las lists, pero aún están disponibles si las necesito.

De hecho, prefiero la segunda solución si es posible. Hay bastantes twigs no streams que se acumulan y ocultarlas hará que sea más fácil search en la list la twig actual que estoy buscando.

Las twigs se fusionan, si -y solo si- otra twig las tiene como padre directo o indirecto (es decir, al seguir a los padres de las confirmaciones, en algún momento llegarás a esa twig). No hay excepciones de esto.

Cuando aplasta los cambios, está creando un nuevo object de confirmación que contiene todos los cambios de esa twig a la vez. Así que tienes una "nueva sucursal" para esa confirmación, y la antigua sucursal se queda para mantener disponibles las confirmaciones originales. Ahora cuando te fusionas, fusionas ese compromiso, por lo que solo esa twig se fusiona.

Entonces, no, cuando se aplastan los cambios, la twig original que todavía contiene las confirmaciones individuales no se reconocerá como fusionada, simplemente porque no está fusionada. Tampoco hay forma de cambiar este comportamiento o de "archivar" una twig. Lo único que podría hacer es crear una label para la twig en su lugar, como un marcador, para que luego pueda eliminar la twig misma.

Sin embargo, la forma correcta es simplemente fusionar la twig completa. Especialmente si está diciendo que desea que la twig original "aún esté disponible si [los necesita]". Si quieres eso, entonces debes mantener la twig original dentro de la historia, por lo que es una parte real de la historia.

Si te preocupa la legibilidad del historial, debes considerar realizar fusiones de avance rápido todo el time, de modo que las twigs en las que te fusionas siempre aparezcan por separado.

Podrías fusionarte normalmente (sin aplastar) y usar la opción –primer padre – para tus commands git. Por ejemplo

 git log --first-parent 

para "simplificar" la historia. Esto simplificará la twig de características a una input de confirmación de fusión solamente y no verá las confirmaciones en la twig fusionada.