2011-05-31 66 views
5

Tengo múltiples commits en una rama. Cuando envío estos commits para revisión de código, nuestra herramienta de revisión de código crea una revisión para cada commit.Cómo combinar múltiples commits en uno sin perder el historial

Para evitar esto, deseo fusionar varias confirmaciones en una única confirmación. Al mismo tiempo, no quiero perder el historial de commits. ¿Es posible crear una nueva rama solo para revisión y combinar todas las confirmaciones en mi rama maestra con una única confirmación en mi rama de revisión? ¿Cómo hago esto?

Respuesta

5

Usted no quieren para hacerlo. La historia real en el sentido de cómo hiciste el compromiso no tiene valor. Los fragmentos del tamaño adecuado para la revisión son interesantes, así que solo rebase -i su rama de trabajo para combinar los compromisos con fragmentos de tamaño manejable y lo más importante, publicarlos para revisar y olvidarse del historial original.

Dicho esto, para combinar las confirmaciones, que puede utilizar:

git merge --squash 

Git no va a tirar la historia. Tampoco lo hace en rebase, pero en ese caso solo se puede acceder a la versión anterior a través del "reflog" y solo si tiene vencimiento para los reflogs (IIRC es 90 días por defecto), eventualmente se volverá inaccesible y git gc lo tirarán. Pero con el squash, la rama original simplemente permanece ahí y aún puedes nombrar la revisión desde el reflog.

Sin embargo, el historial revisado se fusionará con el maestro central mediante la herramienta de revisión y nadie verá su historial original. Puedes mantenerlo, pero no estará relacionado con el oficial y nadie lo verá de todos modos.

Cuestiones relacionadas