154 votos

En git, ¿cuál es la diferencia entre --squash merge y rebase?

Soy nuevo en git y yo estoy tratando de entender la diferencia entre una calabaza y un rebase. Según tengo entendido se realiza una calabaza al hacer un rebase.

172voto

VonC Puntos 414372

Tanto git merge --squash y git rebase --interactive puede producir una "aplastado" commit.
Pero que sirven a propósitos diferentes.

producirá una aplastado cometer en el destino de la rama, sin marcar ninguna relación de combinación.
Esto es útil si usted quiere tirar la fuente rama completamente, pasando de (esquema tomado de LO pregunta):

      X                   stable
     /                   
a---b---c---d---e---f---g tmp

a:

      X-------------------G stable
     /                   
a---b---c---d---e---f---g tmp

y, a continuación, eliminar tmp rama.

reproduce todos o algunos de sus comete sobre una nueva base, permitiendo que la calabaza (o, más recientemente, "arreglar", vean esto por LO pregunta), para ir directamente a:

      stable
      X-------------------G tmp
     /                     
a---b

Si usted elige para aplastar a todas las confirmaciones de tmp (pero, a diferencia merge --squash, usted puede elegir repetir algunos, y suprimieron a los demás).

Por tanto, las diferencias son:

  • no toque a su fuente de rama (tmp) y crea un único commit donde quieras.
  • la otra permite ir en la misma fuente de ramacon:
    • una nueva base
    • un limpiador de historial de

39voto

Mauricio Scheffer Puntos 70470

Combinación de calabaza combina un árbol (una secuencia de commits) en un único commit. Es decir, calabazas de todos los cambios realizados en n comete en un único commit.

Reajuste es re-fundar, es decir, la elección de una nueva base (padre commit) para un árbol. Tal vez la mercurial término para esto es más claro: ellos lo llaman trasplante, debido a que es sólo eso: escoger una nueva tierra (de los padres de comprometerse, de la raíz) de un árbol.

Cuando se hace un interactiva de reajuste, te dan la opción de squash, recoger, editar u omitir el cometa va a reajuste.

La esperanza que estaba claro!

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X