29 votos

git rebase interactivo: la calabaza de mezcla se compromete juntos

Yo quería tener una solución simple para squash dos se funden comete juntos durante un interactiva de reajuste.

Mi repositorio parece:

   X --- Y --------- M1 -------- M2 (my-feature)
  /                 /           /
 /                 /           /
a --- b --- c --- d --- e --- f (stable)

Es decir, tengo un my-feature rama que se ha fusionado dos veces recientemente, sin un real comete en el medio. Yo no sólo quiero rebase el my-feature rama desde que se haya publicado una rama de su propia, sólo quiero calabaza juntos los dos últimos mezcla se compromete en uno (no han publicado los compromete aún)

He intentado:

git rebase -p -i M1^

Pero yo tengo:

Refusing to squash a merge: M2

Lo que finalmente me hizo es:

git checkout my-feature
git reset --soft HEAD^  # remove the last commit (M2) but keep the changes in the index
git commit -m toto      # redo the commit M2, this time it is not a merge commit
git rebase -p -i M1^    # do the rebase and squash the last commit
git diff M2 HEAD        # test the commits are the same

Ahora, la nueva combinación de cometer no es considerada como una combinación de cometer más (que sólo se mantiene en el primer lugar de los padres). Así:

git reset --soft HEAD^               # get ready to modify the commit
git stash                            # put away the index
git merge -s ours --no-commit stable # regenerate merge information (the second parent)
git stash apply                      # get the index back with the real merge in it
git commit -a                        # commit your merge
git diff M2 HEAD                     # test that you have the same commit again

Pero esto puede complicarse si tengo muchos se compromete, ¿tiene una solución mejor ? Gracias.

Mildred

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