Make git pull –rebase preserve fusionar confirmaciones

git pull --rebase elimina las confusiones de fusión no planificadas. ¿Hay alguna manera de hacer que los preserve?

Digamos que mi historia parece …

 A | \ BH | | CG | | DF | / E 

( A es la fusión de cometer).

Después de un git pull --rebase se convierte en–

 H | G | F | X | B | C | D | E 

( X es el nuevo commit. git pull --rebase insertado en mi historial.) – A es eliminado.

Sé que puedes usar git rebase --preserve-merges para conservarlos con git rebase , pero no veo una manera de preservarlos con git pull --rebase .

puedes dividir tu pull en una fetch y una rebase

 git fetch origin master git rebase origin master --preserve-merges 

O (para el próximo git 1.8.5 Q4 2013 , ahora entregado en git 1.8.5, 2013-11-27):

" git pull --rebase " siempre eligió hacer la rebase de aplanamiento estándar del pantano.
Puedes decirle que ejecute " rebase --preserve-merges " estableciendo la configuration " pull.rebase " en " preserve ".

Entonces, una configuration simple será suficiente para asegurarse de que su pull --rebase preserva la fusión:

 git config pull.rebase preserve 

Ver commit 66713ef3 para más (gracias a Stephen Haberman ):

pull: permite pull para preservar las fusiones al rebasar

Si un usuario está trabajando en master, y se ha fusionado en su twig de características, pero ahora tiene que " git pull " porque el master se movió, con pull.rebase su twig de funciones se pull.rebase en master.

Esto se debe a que " git pull " actualmente no sabe sobre el indicador de fusión de conservación de rebase, lo que evitaría este comportamiento, ya que en su lugar reproduciría solo la confirmación de fusión de la twig de entidad en el nuevo maestro y no volvería a reproducir cada confirmación individual en la característica twig.

Agregue una opción --rebase=preserve , que pasará --preserve-merges merges a rebase.

También agregue ' preserve ' a los valores permitidos para la configuration de configuration pull.rebase .

Simplemente:

 git pull --rebase=preserve 

De los documentos :

Cuando se configura para preservar, rebase con la opción --preserve-merges pasada a git rebase para que las git rebase fusión creadas localmente no se aplasten.